在textarea中降低字数限制

时间:2016-01-25 14:04:30

标签: javascript textarea

我有这段代码,它会显示字数并应用字数上限。你能告诉我如何更改此代码以应用下限吗?例如,如果用户输入299个单词并点击输入,则会出现一个弹出窗口,并说,您没有输入足够的单词。感谢。

    $("#TextArea").on('keyup', function () {
        var words = this.value.match(/\S+/g).length;
        if (words > 300) {
            var trimmed = $(this).val().split(/\s+/, 300).join(" ");

            $(this).val(trimmed + " ");
        }
        else {
            $('#display_count2').text(words);
            $('#word_left2').text(300 - words);
        }
    });

}); 

2 个答案:

答案 0 :(得分:1)

您需要添加按键事件才能在按下Enter键时使其正常工作。如果您希望它在表单中的任何位置工作,您可以将其添加到文档中。这样,无论在何处按下,它都会被运行。

$(document).keypress(function(e) {
    if(e.which == 13) {
        checkWordLimit();
    }
});

然后你可以将它连接到一个检查字长

的函数
function checkWordLimit() {
    var words = this.value.match(/\S+/g).length;
    if (words < 300) {
        alert("You need to enter at least 300 words!");
    } else {
        $('#display_count2').text(words);
        $('#word_left2').text(300 - words);
    }
}

如果您想更新单词计数文本,那么只需在keyup事件中调用该函数:

$("#TextArea").on('keyup', function () {
    checkWordLimit();
});

要在提交表单之前进行检查(在按钮上单击),然后您可以根据单词计数检查更改函数以返回true/false,然后在表单成功时提交表单。请注意,这是常规按钮,而不是提交按钮。如果是提交按钮,则需要拦截表单中的submit事件。

$("#SomeButton").on('click', function () {
    if(checkWordLimit()) {
        $("#SomeForm").submit();
    }
});

答案 1 :(得分:1)

您需要在该文本区域添加keydown事件,并且您的事件处理函数应该是这样的。

function onKeyDown(e){ 
  if(e.keyCode == 13){ //for enterkey
      var words = this.value.match(/\S+/g).length;
    if(words >= 300){
       //Your success code
     }else{
       alert("You didn't enter enough words");
     }
   }
}