我知道可以模仿maxlength
财产来自input
上的元素textarea
通过使用这个技巧:
<textarea rows="5" cols="30" onkeydown="return checkLength(this)"></textarea>
<script type="text/javascript">
var maxLength = 30;
function checkLength(elem) {
if (elem.value.length == maxLength) {
return false;
}
return true;
}
</script>
通过使用 checkLenght 的返回值作为onkeydown
事件,我能够有效地防止用户写入超出配置的限制,因为事件链将在输入的字母出现之前被破坏。
我已经使用 Prototype 的事件观察器尝试了相同的技术,但它不起作用。这是我尝试过的简化版本:
<textarea rows="5" cols="30" id="myTextArea"></textarea>
<script type="text/javascript">
var maxLength = 30;
function checkLength() {
if ($('myTextArea').value.length == maxLength)) {
return false;
}
return true;
}
document.observe('dom:loaded',function(){
$('myTextArea').observe('keydown',checkLength);
});
</script>
显然,这行不通,因为我无法通过返回 false 来破坏事件链(并且Event.stop()
只会阻止此事件冒泡,而不会完全停止执行)。
我通过检查文本区域的长度解决了这个问题onkeyup
事件并在超出限制时修剪其值;但它不一样,因为用户会看到文本出现和消失。
有没有办法达到相同的结果?
考虑其他答案和评论。最好进行事后验证,然后不要接受该帖子。
尽管如此,以下应该可以工作(在 FF 和 IE 中可以,在 Opera 中不行。懒得去检查为什么)
<textarea rows="5" cols="30" id="myTextArea"></textarea>
<script type="text/javascript">
var maxLength = 30;
Event.observe('myTextArea', 'keydown', function (event) {
if ($('myTextArea').value.length == maxLength) {
Event.stop(event);
return false;
}
});
</script>
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)