/*
Author : adamlee - ajunlee(at)gmail.com
Blog : http://blog.blueshop.com.tw/ajun
Date : 2006/9/14
Version : 0.4
--
update : (2006/9/14)
comment : 新增class "ShowLenLimit" 設定,限制輸入字數的長度
update : (2006/9/21)
comment : 修正用滑鼠貼上無法計算的問題,加上onchange時的判斷
update : (2008/4/30)
comment : 新增對於input type="text"的處理
update : (2008/6/23)
comment : 調整對asp.net中TextMode="MultiLine"時maxlength屬性無作用的支援,增加MaxLen的屬性設定
*/
function addEvent( obj, type, fn )
{
if (obj.addEventListener)
obj.addEventListener( type, fn, false );
else if (obj.attachEvent)
{
obj["e"+type+fn] = fn;
obj[type+fn] = function() { obj["e"+type+fn]( window.event ); }
obj.attachEvent( "on"+type, obj[type+fn] );
}
}
function CountChar(){
var intChars = parseInt(this.value.length);
var intMax = this.getAttribute('MaxLength');
if (intMax == null) intMax = this.getAttribute('MaxLen');
var objMsg = document.getElementById("div" + this.id);
objMsg.innerHTML = "目前字數 : " + intChars + " , 剩餘字數 : " + (intMax - intChars);
}
function LimitChar(){
var intChars = parseInt(this.value.length);
var intMax = this.getAttribute('MaxLength');
if (intMax == null) intMax = this.getAttribute('MaxLen');
var objMsg = document.getElementById("div" + this.id);
if (intChars > intMax)
{
this.value = this.value.substring(0,intMax);
objMsg.innerHTML = "目前字數 : " + intMax + " , 剩餘字數 : 0";
}else{
objMsg.innerHTML = "目前字數 : " + intChars + " , 剩餘字數 : " + (intMax - intChars);
}
}
function GenDivTag(objid,defMsg)
{
var newDiv = document.createElement("div");
newDiv.setAttribute("id", objid);
newDiv.innerHTML = defMsg;
return newDiv;
}
function GenLimitDiv(objId,objStr)
{
return GenDivTag("div" + objId,"目前字數 : 0, 剩餘字數 : " + objStr);
}
function controlRender(tbxCtl,countChar,limitChar)
{
var tbxParent = tbxCtl.parentNode;
var intMax = tbxCtl.getAttribute('MaxLength');
if (intMax == null) intMax = tbxCtl.getAttribute('MaxLen');
tbxParent.insertBefore(GenLimitDiv(tbxCtl.id,intMax), tbxCtl);
tbxCtl.onkeyup = countChar;
tbxCtl.onchange = limitChar;
}
function TbxLenInit(){
if (document.getElementById && document.createElement && document.appendChild) {
var tbxs = document.getElementsByTagName('textarea');
var tbx;
for (var i = 0; i < tbxs.length; i++) {
tbx = tbxs[i];
if (/\bShowLen\b/.test(tbx.className)) {
controlRender(tbx,CountChar,LimitChar);
}else if(/\bShowLenLimit\b/.test(tbx.className)){
controlRender(tbx,LimitChar,LimitChar);
}
}
tbxs = document.getElementsByTagName("input");
for (var i = 0;i