<script type="text/javascript"> <br>textAreaLimit("t",{lastMsgLabel:"b2"}) <br>function textAreaLimit(area,op){ <br>var defaultOp = { <br>maxLength:10 //最大长度 <br>, IsNumber:false //只能是数字 <br>, lastMsgLabel:null //即时显示可输入个数的Input <br>, msg:"还可以输入{0}个文字" <br>, errorMsg:"文字个数超出最大限制" <br>}; <br>var label; <br>if(typeof area == "string"){ <br>area = document.getElementById(area); <br>} <br>if(!area){ <br>return; <br>} <br>for(var i in op){ <br>defaultOp[i] = op[i]; <br>} <br>if(defaultOp.lastMsgLabel){ <br>if(typeof defaultOp.lastMsgLabel == "string"){ <br>label = document.getElementById(defaultOp.lastMsgLabel); <br>} <br>} <br>if(defaultOp.IsNumber){ <br>area.style.imeMode="Disabled";//IE <br>area.onkeydown = function(){ <br>return event.keyCode != 229; <br>} <br>} <br>area.onkeyup = function(){ <br>if(defaultOp.IsNumber){ <br>this.value = this.value.replace(/\D/g,"");//IE之外的 <br>} <br>if(this.value.length > defaultOp.maxLength){ <br>//------------------------------------------------------------------------------- <br>//方案① <br>this.disabled = "disabled"; <br>this.value = this.value.slice(0,defaultOp.maxLength); <br>this.removeAttribute("disabled"); <br>this.focus(); <br>//方案② <br>//或 <br>//alert(defaultOp.errorMsg); <br>//this.value = this.value.slice(0,defaultOp.maxLength); <br>//------------------------------------------------------------------------------- <br>} <br>if(label){ <br>label.value = defaultOp.msg.replace(/\{0\}/,defaultOp.maxLength -this.value.length); <br>} <br>} <br>} <br></script>
解决输入日语+全角时出现的BUG 主要是在红线中间的代码。
思路就是中断日语的输入状态。
用如果输入超出时能忍受弹窗的话,就用方案②,否则的话就用方案①。










