В jQuery, как обнаружить указанную строку, пока пользователь ее печатает? - PullRequest
4 голосов
/ 07 марта 2011

Как и при вводе комментария на Facebook, когда вы нажимаете @username, он реагирует на это, позволяя вам выбрать имя пользователя в строке.

Используя jQuery, как можно подключить прослушиватель событий для [text: 1]. Я хочу, чтобы событие сработало, когда пользователь ввел [text: в текстовое поле.

Ответы [ 3 ]

4 голосов
/ 07 марта 2011

Zurb создал плагин textchange, который поможет.Посмотрите на их пример «Подтвердить текст» внизу, я считаю, что это почти то, что вы ищете ..

http://www.zurb.com/playground/jquery-text-change-custom-event

2 голосов
/ 07 марта 2011

используйте функцию keyup для запуска.Разбейте всю строку и проверьте ее.

[ОБНОВЛЕНИЕ]: более улучшенная версия

<script>

var totalcount=0;

$(function (){

    $('#text').keyup(

        function (){

              var arr = $(this).val().split(" ");

              var matchitems = count('hello', arr);

              //console.log(matchitems);

              if(matchitems > totalcount){
                alert('hello');
                totalcount = matchitems;
              }
              if(matchitems < totalcount)
              {
                totalcount = matchitems;
              }

        }
    )

})

function count(value, array)
{
    var j=0;

    for(var i=0;i<array.length;i++)
    {

        if(array[i] == "hello"){
            j++;    
        }
    }
    return j;
}

</script>

<input type="text" id="text" />
})

</script>

<input type="text" id="text" />
1 голос
/ 07 марта 2011

Использование keyup, как, например, @experimentX, упомянутое - это путь, по которому вы хотите идти б / к, тогда вы будете знать, что у вашего пользователя есть введенное значение. Однако запуск цикла for будет чрезвычайно дорогостоящим для каждого отдельного события keyup. Вместо этого, поскольку вы уже знаете требуемое значение, вы можете использовать предустановку regexp для поиска значения:

<input type="text" id="text" value="" />

<script>
    $(function () {
        var $input = $('#text');
        $input.keyup(function (e) {
            var regexp = /\[text\:/i,
                val = $(this).val();
            if (regexp.test(val)) {
                console.log('i have it: ', val);
            }
        });
    });
</script>

Вот несколько дополнительных сценариев о том, как вы можете написать regexp.

  • Вы хотите, чтобы строка была в самом начале ввода: var regexp = /^\[text\:/i;
  • Основываясь на приведенном выше, но включите любое количество пробелов перед текстом, который вам действительно нужен: var regexp = /^\s+?\[text\:/i;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...