jquery 限制输入字符并阻止用户键入

t0ybt7op  于 2023-04-20  发布在  jQuery
关注(0)|答案(2)|浏览(124)

我希望用户输入一个最大的textarea中的5行,每行最多15个字符。之后,用户应该能够防止按下除箭头,删除,退格键等任何键。
这里是我的函数,它接受TextareaId,事件和每个文本区域的限制(我有3个不同字符限制的文本区域),我在代码中达到event.preventDefault();,但它仍然允许用户添加更多字符

function charCountTextarea(textAreaId,event,limit)
{
  var code = (event.keyCode ? event.keyCode : event.which);
  var Length = $("#"+textAreaId).val().length;
  var t = $("#"+textAreaId)[0];
  var AmountLeft = limit - Length;
  var lineIndex = t.value.substr(0, t.selectionStart).split("\n").length-1;
  var t = $("#"+textAreaId).val().split("\n");
  var lineIndex = (t.length)-1

  var controlKeys = [8, 46, 37, 38,39,40];
  var isControlKey = controlKeys.join(",").match(new RegExp(event.which));

  if(lineIndex>4 && t[lineIndex].length>15) {
    if(isControlKey) {
      return;
    }
    else {
      console.log("prevent");
      event.preventDefault();
    }
  }

  if(AmountLeft<0) {
    if(isControlKey) {
      return;
    }
    else {
      console.log("preve 2");
      event.preventDefault();
    }
  }
}
wqsoz72f

wqsoz72f1#

您可以简单地执行以下操作:

var characters=500 //max characters

$("#MyTextArea").keyup(function(){
    if($(this).val().length > characters){
        $(this).val($(this).val().substr(0, characters));
    }
});

或者在你的代码里

event.preventDefault()

用途:

$(this).val($(this).val().substr(0, characters));
mwngjboj

mwngjboj2#

如果你不想使用javascript,你可以简单地限制'maxlength'属性:

<textarea name="hard" maxlength='45'></textarea>

相关问题