我想阻止用户在达到最大字符数限制后在textarea中输入文本。发生了什么,当我达到最大限制,然后我的文本区域滚动条移动到顶部我以某种方式阻止这个代码。
jQuery(document).ready(function($) { $('textarea.max').keyup(function() { var $textarea = $(this); var max = 400; if ($textarea.val().length > max) { var top = $textarea.scrollTop(); $textarea.val($textarea.val().substr(0,max)); $textarea.scrollTop(top); } }); }); //end if ready(fn)
但我也希望达到最大限制用户无法在textarea中输入任何内容。目前,如果用户按住键达到最大限制,则会在文本区域中键入字符,但是在释放按钮之后,它将返回到原始文本(即$ textarea.val($ textarea.val())。 substr(0,max));)。但是,一旦这个条件成真,我想要
if ($textarea.val().length > max) {
解决方法
在发生默认行为(填充文本区域)之后,keyup事件触发。
最好使用按键事件,并过滤不可打印的字符。
演示:http://jsfiddle.net/3uhNP/1/(最大长度4)
jQuery(document).ready(function($) { var max = 400; $('textarea.max').keypress(function(e) { if (e.which < 0x20) { // e.which < 0x20,then it's not a printable character // e.which === 0 - Not a character return; // Do nothing } if (this.value.length == max) { e.preventDefault(); } else if (this.value.length > max) { // Maximum exceeded this.value = this.value.substring(0,max); } }); }); //end if ready(fn)