firefox中的javascript字符计数器
javascript character counter in firefox
首先,让我说我对javascript一无所知。最近几天我一直在网上搜索,想找到一个字符计数器来添加到文本区域。我终于找到了一个漂亮的小脚本(工作示例),除了一个问题外,它工作得很好。当您达到Firefox中允许的最大字符数时,整个键盘将被禁用。您不能退格以缩短计数,也不能单击中间并删除。适用于IE、Chrome和Safari,但不适用于FireFox。我的请求是,有人能帮我更改javascript吗?这样,当达到最大字符数时,FireFox中的退格和删除按钮就会启用。
谢谢你的帮助。
JavaScript代码
<script language = "Javascript">
maxL=255;
var bName = navigator.appName;
function taLimit(taObj) {
if (taObj.value.length==maxL) return false;
return true;
}
function taCount(taObj,Cnt) {
objCnt=createObject(Cnt);
objVal=taObj.value;
if (objVal.length>maxL) objVal=objVal.substring(0,maxL);
if (objCnt) {
if(bName == "Netscape"){
objCnt.textContent=maxL-objVal.length;}
else{objCnt.innerText=maxL-objVal.length;}
}
return true;
}
function createObject(objId) {
if (document.getElementById) return document.getElementById(objId);
else if (document.layers) return eval("document." + objId);
else if (document.all) return eval("document.all." + objId);
else return eval("document." + objId);
}
</script>
HTML代码
<font> Maximum Number of characters for this text box is 255.<br>
<textarea onKeyPress="return taLimit(this)" onKeyUp="return taCount(this,'myCounter')" name="Description" rows=7 wrap="physical" cols=40>
</textarea>
<br><br>
You have <B><SPAN id=myCounter>255</SPAN></B> characters remaining for your description...</font>
虽然这个脚本.html看起来很旧,而且你真的应该找到更现代的东西,但解决这个问题的最简单方法是修改taLimit()函数,考虑按下的键是否可打印:
function isCharacterKey(event) {
var charCode = event.charCode;
return charCode !== 0;
}
function taLimit(taObj, event) {
if (taObj.value.length<maxL || !isCharacterKey(event)) return true;
return false;
}
注意,需要修改对taLimit()的调用以包含事件对象:
<textarea onKeyPress="return taLimit(this, event)" onKeyUp="javascript:return taCount(this,'myCounter')" name="Description" rows=7 wrap="physical" cols="40">
</textarea>
你可以试试这个:
HTML:
<p>Maximum Number of characters for this text box is 255.</p>
<textarea data-counter="myCounter" id="Description" rows="7" wrap="physical" cols="40" maxlength="255">
</textarea>
<p>You have <b><span id="myCounter">255</span></b> characters remaining for your description...</p>
JS:
var txtArea = document.getElementById('Description');
txtArea.counter = document.getElementById(txtArea.getAttribute('data-counter'));
txtArea.onkeyup = txtArea.onchange = txtArea.oninput = taLimit;
function taLimit() {
var maxL = this.getAttribute('maxlength');
if (this.value.length>=maxL){
this.value = this.value.substring(0, maxL);
}
this.counter.innerHTML = maxL-this.value.length;
}
演示:http://jsfiddle.net/3MueW/2/
您支持哪些浏览器?为什么不能只使用maxlength属性而不使用javascript?那么你只需要一个函数,它会说var charsLeft = $(this).attr("maxlength")-$(this).val().length;
,并把它放在你的myCounter
跨度中?它是HTML5的新版本,但在大多数新浏览器(不是Opera)中仍然支持
<font> Maximum Number of characters for this text box is 255.<br>
<textarea onKeyUp="countCharsLeft(this)" onKeyPress="countCharsLeft(this)" name="Description" rows=7 wrap="physical" cols=40 maxlength="255">
</textarea>
<br><br>
You have <B><SPAN id="myCounter">255</SPAN></B> characters remaining for your description... </font>
Javascript
function countCharsLeft(element){
var curCharCount = element.value.length;
var maxLength = element.getAttribute("maxlength");
document.getElementById("myCounter").innerHTML = maxLength-curCharCount;
}
JSFiddle演示
相关文章:
- js中的字符计数器
- 使用jQuery的TextArea字符计数器
- 多重<text区域>具有字符计数器+行限制器的字段
- 表单输入的字符计数器 - 不计数
- 将所有特定字符替换为计数器升序
- 字符计数器不会打印所有字符
- 键盘事件、字符计数器和textLength道具困境
- 简单的字符频率计数器,但为什么赢得'计数不是实时发生的
- firefox中的javascript字符计数器
- 用于文本输入的Javascript字符限制计数器函数
- 字符计数器和限制器收到 Nan 错误
- 如何在simple_form中实现基本字符计数器
- 在数据库中存储10个UTF8字符而不丢失文本字符计数器
- JavaScript文本区字符计数器插入标签
- 剩余字符计数器弹出
- 我是否在这个字符限制计数器中实现了正确的if语句?
- 二维数组中的字符计数器
- Jquery验证与字符计数器插件
- 字符计数器在表中重复回显时不起作用
- asp.net mvc-带参数的Javascript字符计数器功能