我想阻止用户在达到最大字符数限制时在textarea中输入文本。发生了什么事情,当我达到最大限度,然后我的文本区域滚动条移动到顶部我以某种方式防止此代码。如何防止用户在达到最大字符数限制后在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) {
用户无法输入任何内容。我希望光标从textarea消失。但是,如果用户删除一些文本,则光标也可供用户再次输入输入。我该怎么做?
谢谢,但在测试你的代码之后。一旦达到最大限制,它就会停止。我无法输入一个单词。但是,如果我按下退格键,那么它也不起作用。至少用户可以选择按退格删除文本,然后再次开始输入。顺便说一句,这是我想要的行为。用户在达到最大限制后不能输入任何内容。 :)我怎么做,该用户按退格键删除,然后再次开始输入文字。谢谢 – Basit
@Basit更新回答。在Firefox中,jQuery不能将非可打印字符标准化为零。所以,你必须手动排除(http://www.asciitable.com/)。 –
感谢Rob W :)但请告诉我你使用过'(e.which <0x20)'。这意味着所有的字符,如退格键,输入,制表符,shift键都是不可打印的。我对吗?你还说过,“不可打印的字符没有通过jQuery来归为零”。你没有归一化到0是什么意思?你能向我解释吗? – Basit