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

27

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

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

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

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

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

Что вы имеете в виду, что значение изменяется при щелчке по ячейке таблицы, где находится разметка для этого, и означает ли это, что обработчик события щелчка - это путь? adeneo
Похоже, вы хотите присоединить к событию click этой ячейки таблицы. Tejs
Я хотел уменьшить объем кода, поместив значение ссылки, по которой щелкнули, в поле ввода текста, а затем на это изменение, выполнив одну функцию, но в конце я создал функцию для каждого события щелчка (22 события) ... Marko Cakic

Ваш Ответ

10   ответов
0

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

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);

5

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 
    }

});
1

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

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

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

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

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


$('<tab_cell>').click (function () {
   $('#kat')
      .val($(this).text()) //updating the value of the textbox 
      .change();           //trigger change event.
});
Я хотел уменьшить объем кода, поместив значение ссылки, по которой щелкнули, в поле ввода текста, а затем на это изменение, выполнив одну функцию, но в конце я создал функцию для каждого события щелчка (22 события) ... Marko Cakic
@MarkoCakic Ваш вопрос не ясен, разместите соответствующие HTML и JS, чтобы мы могли помочь.
Это действительно крутой способ запуска события с цепочкой. Спасибо!
9

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

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

3
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>
0

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

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

0

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

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

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

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

4

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

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

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

Похожие вопросы