Javascript/JQuery: как считать слова, разделенные запятой?

Javascript:

$(document).ready(function()
{
    $('#field').keyup(function()
    {
        var count = '??';

        $('#count').html(count);
    });
});

HTML:

<input type="text" id="field" /> <span id="count">5</span>

Примеры (слова всегда разделяются запятой):

example 1: word, word word
count: (5 - 2) = 3

example 2: word
count: (5 - 1) = 4

example 3: word, word,
count: (5 - 2) = 3

example 4: word, word, word
count: (5 - 3) = 2

Итак, мне нужно подсчитать, сколько слов разделены запятой, но, например, как показано в примере 3, он не должен считать их как 3 слова только тогда, когда есть это слово также ПОСЛЕ запятой.

И пользователю не должно быть разрешено вводить более 5 слов.


person Community    schedule 20.03.2011    source источник


Ответы (3)


Что-то типа:

$("#input").keyup(function(){
    var value = $(this).val().replace(" ", "");
    var words = value.split(",");

    if(words.length > 5){
        alert("Hey! That's more than 5 words!");
        $(this).val("");
    }
});

Пример jsFiddle: http://jsfiddle.net/BzN5W/

ИЗМЕНИТЬ:

Лучший пример: http://jsfiddle.net/BzN5W/2/.

$("#input").keypress(function(e){
    var value = $(this).val().replace(" ", "");
    var words = value.split(",");

    if(words.length > 5){
        //alert("Hey! That's more than 5 words!");
        e.preventDefault();
    }
});
person mattsven    schedule 20.03.2011
comment
Нет проблем ;) Не забудьте проверить мой ответ. - person mattsven; 20.03.2011
comment
Конечно, нет, лол, мне просто пришлось подождать еще минуту ;) еще раз спасибо! - person ; 20.03.2011

words.split(",").length должен дать вам то, что вы хотите, где words — это строка, содержащая ввод.

person Fareesh Vijayarangam    schedule 20.03.2011

Я думаю, вы ищете это:

$('#field').keyup(function(e){
    var count = $(this).val().split(',').length;
    $('#count').html(count);
    if(count > 4)
        e.preventDefault();
});
person Simeon    schedule 20.03.2011