Поиск запятых в строках с помощью JS - PullRequest
0 голосов
/ 11 июля 2011

Я пытаюсь изучить JS, так что прости меня, если твой код заставляет мир взрываться. В любом случае, я пытаюсь сделать интерфейс системы тегов похожим на SO. Там, где пользователь вводит слова, а ТАК разделяет их запятой (или пробелом, но я этого не хочу).

Я использую jQuery для доступа к DOM (потому что это намного проще), и я знаю, что существуют различные плагины , которые могут это сделать и накормить бездомных, но, как я уже сказал, я хочу научиться .

Вот что у меня есть:

<input type="textbox" name="somebox" id"someid">

$(document).ready(function() {
    var startPos = 0;

    $("#someid").keyup(function() {
        var inputText = $(this).val();
        var commaPosition = inputText.indexOf(",", startPos);
        var foundWords = [];

        alert('Hello'); // even this doesn't work... why???
        if (commaSearch !== '-1') {

            // take the word:
            foundWords.push(inputText.slice(startPos,commaPosition));

            startPos = commaPosition + 1;
        }
    });
});

Его также можно найти здесь . Кажется, ничего не работает, даже предупреждение. Любая помощь будет благодарна.

Ответы [ 4 ]

2 голосов
/ 11 июля 2011

Проблемы:

  • Неверный HTML - вы пропускаете = между id и "someid".Это заставит alert() работать.
  • Использовать String.split(',') вместо String.indexOf(',').Чтобы разделить и избавиться от лишних пробелов: inputText.split(/\s*,\s*/g)
  • Я также получаю Uncaught ReferenceError: commaSearch не определен.- Феликс Клинг

Демо с исправлениями: http://jsfiddle.net/mattball/2sE8b/

0 голосов
/ 11 июля 2011

Является ли этим тем, что вы хотите?

Как указал Мэтт Болл, вы пропускаете знак = после id в своем HTML.Далее вы используете commaPosition, а затем commaSearch.Далее вы используете оператор not-identity с числом и строкой, который всегда будет возвращать false.

0 голосов
/ 11 июля 2011

Ты будешь смеяться, но у тебя не было = инфронта id=someid: D http://jsfiddle.net/SuperPhil/9KVs4/2/

0 голосов
/ 11 июля 2011

Это то, что вы хотите?

DEMO

$(document).ready(function() {
    $("#someid").keyup(function() {
        var inputText = $(this).val();
        var foundWords = inputText.split(","); // or as posted elsewhere split(/\s*,\s*/g)
        if (foundWords.length>1) $("#tags").html(foundWords.join(";"))
    });
});
...