Word统计jquery并阻止用户输入

时间:2015-01-22 12:42:54

标签: javascript jquery



 $(document).ready(function(){

     $("input").keyup(function(){
         if($(this).val().split(' ').length == 10){
             alert();
         }
  });
       });

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.0.0/jquery.min.js"></script>
Enter your name: <input type="text">
&#13;
&#13;
&#13;

如果输入是1 2 3 4 5 6 7 8 9警报被触发,我知道它包含了空格。但是如何在达到限制时阻止用户添加更多字符(甚至是空格)?

4 个答案:

答案 0 :(得分:1)

当达到最大字数时,可以很容易地将问题简化为禁用空格键:

这应该有效:http://jsfiddle.net/wznervgz/6/

<input data-max-words="10" />

JS:

$('input[data-max-words]').on('keydown', function (e) {
    var $txt = $(this),
        max = $txt.data('maxWords'),
        val = $txt.val(),
        words = val.split(' ').length;

    if (words === max && e.keyCode === 32)
        return false;
});

答案 1 :(得分:0)

考虑在每次加密后存储输入值,如果wordcount大于你的限制,只需setVal回到“之前”保存的金额。因此它将以var previousVal = '';开始,然后相应地递增,直到比较返回true,设置val并返回。

演示:http://jsfiddle.net/robschmuecker/wznervgz/1/

$(document).ready(function(){
     var previousValue = '';
     $("input").keydown(function(){
         if($(this).val().split(' ').length >= 10){
             alert();
             $(this).val(previousVal);
             return;
         }
         previousVal = $(this).val();
  });
});

答案 2 :(得分:0)

希望这会对你有所帮助。

  <textarea name="txtMsg" id="word_count" cols="1" rows="1"> </textarea>
 <span style="padding-left:10px;">Total word Count : 
 <span id="display_count" style="font-size:16px; color:black;">0</span> words &
<span id="count_left" style="font-size:16px; color:black;">2</span> words left.</span>
<br>

jquery代码:

  var max_count = 2;
 $(document).ready(function () {
var wordCounts = {};
$("#word_count").keyup(function () {
    var matches = this.value.match(/\b/g);
    wordCounts[this.id] = matches ? matches.length / 2 : 0;
    var finalCount = 0;
    $.each(wordCounts, function (k, v) {
        finalCount += v;
    });
    var vl = this.value;
    if (finalCount > max_count) {
        vl = vl.substring(0, vl.length - 1);
        this.value = vl;
    }
    var countleft = parseInt(max_count - finalCount);

    $('#display_count').html(finalCount);
    $('#count_left').html(countleft);
    am_cal(finalCount);
});
}).keyup();

小提琴链接:http://jsfiddle.net/aVd4H/32/

谢谢。

答案 3 :(得分:0)

你可以试试这个:

$("input").keydown(function(e){
         if($(this).val().split(' ').length == 10){
             alert();
             e.preventDefault();
             return false;
}