javascript - 限制输入字符并阻止用户输入

标签 javascript jquery html textarea

我希望用户在文本区域中最多输入 5 行,每行最多 15 个字符。之后,用户应该能够阻止按除箭头、Del、Backspace 等之外的任何键。

这是我的函数,它接受 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();
    }
  }
}

最佳答案

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

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));

关于javascript - 限制输入字符并阻止用户输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12563258/

相关文章:

javascript - 为 Google 阶梯面积图着色?

javascript - 使用 jquery trim 输入而不阻塞空格输入?

java - 如何使用 Java 解码/解密 MD5 加密

jquery - 使用JQuery调用系统带有 anchor 标签的文件上传窗口

javascript - 在 js 中使用类名调用时计时器不工作

html - 如何使用 css 使用相对宽度在另一个 <div> 表中创建一个 <div> 表?

javascript - AngularJS - 输入更改传入指令的外部指令值

电子邮件签名中的 HTML 调整图像

javascript - 如何使用css和jquery选择图像后突出显示图像

javascript - 如何更改长滚动页面上的 URL?