Javascript-форум (https://javascript.ru/forum/)
-   jQuery (https://javascript.ru/forum/jquery/)
-   -   select2 input text (https://javascript.ru/forum/jquery/59930-select2-input-text.html)

Ford 03.12.2015 16:33

select2 input text
 
Есть форма
<div class="group">
    <label> центр</label>
    <input type="text" name="brand" id="brand" title="Выберите">
</div>


И скрипт для её инициализации

$("#brand").select2({
        placeholder : "Выберите ",
        data : ["test", "temp", "taunt", "twist"]
    }).on("change", function(){alert(1);});


Если выбрать какой-то элемент, то сработает алерт. Но я не могу прицепить отлов события, когда в input изменяется содержимое, т.е. например keypress не срабатывает. Как отловить изменение в input?

Mess4me 03.12.2015 16:41

Ford,
здесь
Цитата:

Сообщение от Ford
on("change", function(){alert(1);});

при изменении (change) срабатывает function(){alert(1).
а что Вам надо? Вы же явно ставите ,чтобы при изменении срабатывала функция.

Ford 03.12.2015 16:43

Я просто пример привел. Там при клике на элемент выпадающего списка вызывается событие. А если, пример, вместо change написать keypress и начать вводить текст, то ничего не срабатывает.

Mess4me 03.12.2015 16:47

Ford,
а так ?
$("#brand").select2({
        placeholder : "Выберите ",
        data : ["test", "temp", "taunt", "twist"]
    }).on("keyup keydown", function(){alert(1);});

Ford 03.12.2015 16:51

Mess4me,
и так тоже.

рони 03.12.2015 16:53

Цитата:

Сообщение от Ford
Как отловить изменение в input?

Цитата:

Сообщение от Ford
).on("input",

:write:

Ford 03.12.2015 16:55

рони,
Цитата:

Сообщение от Ford (Сообщение 398567)
и так тоже.

Я это все перепробовал.

Mess4me 03.12.2015 16:56

Ford,
так работает
<!doctype html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
    <script src="//code.jquery.com/jquery-1.11.3.min.js"></script>

</head>
<body>

<div class="group">
    <label> центр</label>
    <input type="text" name="brand" id="brand" title="Выберите">
</div>




<script>
    $("#brand").on("keydown keyup ", function(){alert(1);});
</script>

</body>
</html>

Mess4me 03.12.2015 16:57

Mess4me,
что такое select2 у Вас?

Ford 03.12.2015 16:59

Mess4me,
плагин для jquery. Надо было сразу сказать это. http://select2.github.io

dyhmzall 03.12.2015 17:17

Попробуйте использовать live вместо on.
Или вариант on с тремя параметрами, помните?
.on('change', 'selecter', function)

Ford 03.12.2015 17:19

dyhmzall,
с тремя не работает, а вот про live что-то не вспомнил даже. Попробую.

рони 03.12.2015 17:22

Ford,
"select2:select" вместо keyup и прочего

Цитата:

$eventSelect.on("select2:select", function (e) { log("select2:select", e); });
http://select2.github.io/examples.ht...mmatic-control

Ford 03.12.2015 17:35

рони,
этот пример работает, когда выберешь из списка элемент, но не когда набираешь в текстовом поле. Я его тоже проверял. Но в целом, я понял, что надо сделать.
Если кому нужно будет в подобном же разобраться

function matching(term, text)
{
    if (text.toUpperCase().indexOf(term.toUpperCase())+1)
    {
        alert(term+" "+text+"  could be eq");
        return true;
    }
    else
    {
        return false;
    }
}


$.fn.select2.amd.require(['select2/compat/matcher'], function (oldMatcher) {
        $("#" + label).select2({
            placeholder: "Выберите ",
            data: data || [],
           matcher: oldMatcher(matching)
        })
    });


Часовой пояс GMT +3, время: 12:14.