汉字按照两个字符计算,英文字符按照一个字母计算
$.fn.extend({ tqMaxLength:function(options){ var self=$(this); var defaultOption={ maxLength:10, showSpanId:"" } $.extend(defaultOption,options); self.keyup(function(){ var themeVal=self.val(); var theVal=themeVal.replace(/[^\x00-\xff]/g, "xx"); var themeLength=theVal.length; if(themeLength>defaultOption.maxLength){ var tempLength=0,subLength=0,reg=/^[\x00-\xff]+$/; for (var i = 0; i < themeVal.length; i++) { if (reg.test(themeVal.charAt(i))) { tempLength++; }else{ tempLength=tempLength+2; } subLength++; if(tempLength==defaultOption.maxLength){ break; }else if(tempLength>defaultOption.maxLength){ subLength--; break; } } self.val(themeVal.substring(0,subLength)); } $("#"+defaultOption.showSpanId).text(self.val().replace(/[^\x00-\xff]/g, "xx").length+"/"+defaultOption.maxLength); }); } });
其中有两个参数,一个是显示地方的id,另一个是限制的长度。
例如:
$("#userName").tqMaxLength({
maxLength:50,
showSpanId:"showLength"
});