2015-01-22 2 views
0

слов 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">

Если вход 1 2 3 4 5 6 7 8 9 предупреждение выпустили, я знаю, что входит в пространство. Но как остановить пользователя от добавления большего символа (даже пространства), когда предел достигнут?

+0

@RGraham Я знаю maxlength, но я хочу достичь чего-то еще, используя js –

ответ

0

Подумайте о сохранении значения ввода после каждого нажатия клавиши, и если словосочетание больше вашего предела, просто setVal вернитесь к ранее сохраненной сумме. Поэтому он начинался с var previousVal = '';, а затем увеличивался соответственно до тех пор, пока сравнение не вернётся, установите значение val и return.

Демо: 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(); 
    }); 
}); 
+0

что-то не так? –

+0

@AmyJohnson Я забыл добавить «val» назад изначально, но редактировался. –

+0

Ваше решение не работает, если пользователь продолжает нажимать пробел. Он по-прежнему принимает новых персонажей. – ArinCool

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

Fiddle ссылка: http://jsfiddle.net/aVd4H/32/

Спасибо.

0

Вы можете попробовать это:

$("input").keydown(function(e){ 
     if($(this).val().split(' ').length == 10){ 
      alert(); 
      e.preventDefault(); 
      return false; 
} 
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; 
}); 
Смежные вопросы