JavascriptScript:传递对象/场到JavaScript函数:。此[控制]对this.form [控制]
<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
不是。无论如何要使用该函数而不将表单中的字段封装起来?谢谢
感谢您的快速响应! – Mike
另外,我甚至没有想到的新行字符,这会是一个合适的解决办法: 如果(limitField.value.replace(“\ n”,“”)。长度> limitNum) 如果(limitCount != null) limitCount.innerText = limitNum - limitField.value.replace(“\ n”,“”).length; 或者会做那么多的字符串解析效率低下? – Mike
嗯,是的,你基本上必须看看字段的值,并检查不是以“\ r”开头的单独的“\ n”字符。如果你找到这些(就像你在Firefox中那样),只需将它们的数量加到长度上即可得到*真实*长度。 – Pointy