jQuery - при изменении входного текста

Я пытаюсь сделать функцию, которая будет выполняться, когда значениеtext input field изменено Значение поля изменяется при нажатии на ячейку таблицы, а не наkeyupни паста. Я попробовал это так:

<code>$("#kat").change(function(){ 
    alert("Hello");
});
</code>

И у меня есть текстовое поле:

<code><input type="text" id="kat" value="0"/>
</code>

но это не работает. Любая помощь?

 adeneo03 мая 2012 г., 21:51
Что вы имеете в виду, что значение изменяется при щелчке по ячейке таблицы, где находится разметка для этого, и означает ли это, что обработчик события щелчка - это путь?
 Marko Cakic03 мая 2012 г., 22:01
Я хотел уменьшить объем кода, поместив значение ссылки, по которой щелкнули, в поле ввода текста, а затем на это изменение, выполнив одну функцию, но в конце я создал функцию для каждого события щелчка (22 события) ...
 Tejs03 мая 2012 г., 21:50
Похоже, вы хотите присоединить к событию click этой ячейки таблицы.

Ответы на вопрос(10)

$('#kat').on('input',function(e){
 alert('Hello')
});

onchange Событие будет срабатывать только тогда, когда вы вводите данные и вкладываете текстовое поле.

Одним из обходных путей является запуск события изменения текстового поля при изменении значения текстового поля из сценария. Увидеть ниже,

$("#kat").change(function(){ 
    alert("Hello");
});


$('<tab_cell>').click (function () {
   $('#kat')
      .val($(this).text()) //updating the value of the textbox 
      .change();           //trigger change event.
});
 Marko Cakic03 мая 2012 г., 22:01
Я хотел уменьшить объем кода, поместив значение ссылки, по которой щелкнули, в поле ввода текста, а затем на это изменение, выполнив одну функцию, но в конце я создал функцию для каждого события щелчка (22 события) ...
 03 мая 2012 г., 22:02
@MarkoCakic Ваш вопрос не ясен, разместите соответствующие HTML и JS, чтобы мы могли помочь.
 28 мар. 2013 г., 06:43
Это действительно крутой способ запуска события с цепочкой. Спасибо!
function search() {
        var query_value = $('input#search').val();
        $('b#search-string').html(query_value);
        if(query_value !== ''){
            $.ajax({
                type: "POST",
                url: "search.php",
                data: { query: query_value },
                cache: false,
                success: function(html){
                    //alert(html);
                    $("ul#results").html(html);
                }
            });
        }return false;    
    }

    $("input#search").live("keyup", function(e) {
        clearTimeout($.data(this, 'timer'));

        var search_string = $(this).val();

        if (search_string == '') {
            $("ul#results").fadeOut();
            $('h4#results-text').fadeOut();
        }else{
            $("ul#results").fadeIn();
            $('h4#results-text').fadeIn();
            $(this).data('timer', setTimeout(search, 100));
        };
    });


and the html 
<input id="search" style="height:36px; font-size:13px;" type="text" class="form-control" placeholder="Enter Mobile Number or Email"  value="<?php echo stripcslashes($_REQUEST["string"]); ?>" name="string" />
        <h4 id="results-text">Showing results for: <b id="search-string">Array</b></h4>
        <ul id="results"></ul>

In older, pre-HTML5 browsers, "keyup" is definitely what you're looking for.

In HTML5 there is a new event, "input", which behaves exactly like you seem to think "change" should have behaved - in that it fires as soon as a key is pressed to enter information into a form.

$('element').bind('input',function);

var change_temp = "";
$('#url_key').bind('keydown keyup',function(e){
    if(e.type == "keydown"){
        change_temp = $(this).val();
        return;
    }
    if($(this).val() != change_temp){
        // add the code to on change here 
    }

});

почему мой код не работает, потом я понял, что мне нужно настроить обработчики событий, как только документ загружен, иначе, когда браузер загружает код построчно, он загружает JavaScript, но это не так. пока есть элемент, чтобы назначить ему обработчик событий. с вашим примером это должно быть так:

$(document).ready(function(){
     $("#kat").change(function(){ 
         alert("Hello");
     });
});

$('#myInputFieldId').bind('input',function(){ 
               alert("Hello");
    });

Обратите внимание, что в соответствии сэтот документ JQuery& quot; на & quot; рекомендуется, а не связывать в более новых версиях.

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

http://jsfiddle.net/toddhd/Qt7fH/

$('#kat').on('keyup', function () {
    alert("Hello");
});

или как ты хочешь

$('#kat').on('click', function () {
    alert("Hello");
});

Событие изменения поля ввода в текстовом поле запускается, как и следовало ожидать, событие jQuery .Change работает корректно только в браузерах, поддерживаемых html5

Она также отображается [результат выполнения обработчика], если вы измените текст в поле, а затем нажмете. Если поле теряет фокус без изменения содержимого, событие не инициируется. & Quot ;.

Попробуйте события keyup и keydown, например:

$("#kat").keydown(function(){ 
   alert("Hello");
});

Ваш ответ на вопрос