JavascriptScript:
<script type="text/javascript">
function limitText(limitField, limitCount, limitNum){
if (limitField.value.length > limitNum)
limitField.value = limitField.value.substring(0, limitNum);
else{
if (limitCount != null)
limitCount.value = limitNum - limitField.value.length;
}
}
</script>
这有效:
<form name="myForm">
<textarea name="myTextArea" id="myTextArea" onKeyDown="limitText(this.form.myTextArea, this.form.remCount, 10);"></textarea>
<label name="remCount" id="remCount"></label>
</form>
但这不是:
<textarea name="myTextArea" id="myTextArea" onKeyDown="limitText(this.myTextArea, this.remCount, 10);"></textarea>
<label name="remCount" id="remCount">Chars Left </label>
使用Chrome进行调试,如果我不使用表单方法,则limitField
和limitCount
为空,但this.myTextArea
不是。无论如何使用该函数而不在表单中包含字段?感谢
答案 0 :(得分:2)
单独传递this
。它本身就是元素。要查找“计数”标签,您始终可以使用document.getElementById()
来查找它。
此外,虽然这不是您的问题的一部分:请注意,当值包含硬换行时,浏览器会报告textarea长度的不同值;也就是说,由于用户键入“Enter”键而出现的换行符。有些浏览器将换行符视为值2个字符,因为当<textarea>
从表单发回服务器时,实际上它们 两个字符。但是,某些浏览器仅将换行符报告为1个字符长,即使它们遵循相关规范并将<textarea>
值重新发送回2个字符的换行符。
现代浏览器支持maxlength
元素上的<textarea>
属性,但由于上述原因,它在Chrome和Firefox中无法正常运行(尽管我认为修复工作正在通过WebKit进行)