2012-04-04 2 views
4
$('input').change(function(){ 
    alert($(this).val()); 
}); 
$('input').val(1); 

Это не работает. Мне нужно захватить ввод изменений с помощью JavaScript: -sКак захватить событие изменения во вводе с помощью jquery?

Спасибо.

+0

Ваш вопрос остается неясным. У вас есть обработчик «change», предполагающий, что вы вызываете его в соответствующее время (т. Е. В теге '

2

Вы должны поместить эти функции внутри «Ready» функции. увидеть скрипку: http://jsfiddle.net/SfjJQ/1/

$(function() { 
    $('input').change(function() { 
     alert($(this).val()); 
    }); 
    $('input').val(1); 
    $('input').trigger('change'); 
});​ 

иметь в виду, что ваш:

$('input').val(1); 

инициализирует вход, чтобы иметь значение 1.

Конечно, вы также можете сделать это:

$(function() { 
    $('input') 
     .change(function() { 
      alert($(this).val()); 
     }) 
     .val(1) 
     .trigger('change'); 
});​ 
+0

Событие не вызвано вызовом '.val()'. – Pointy

+0

не должно быть –

+0

Моя интерпретация вопроса заключается в том, что г-н Пользователь ожидал вызова '.val (1)' для запуска обработчика «change». Я могу ошибаться; вопрос редок и загадочен. – Pointy

1

Как уже упоминалось, .val() не вызывает никаких событий; Однако, вы могли бы добавить функцию-обертку для JQuery, который изменит значение и вызвать событие, если хотел:

$(function() { 

    //-- new jQuery function 
    $.fn.changeVal = function() { 
     $.fn.val.apply(this, arguments); 
     $(this).trigger('change'); 
    }; 

    //-- your updated code 
    $('input').change(function(){ 
     alert($(this).val()); 
    }); 
    $('input').changeVal(1); 

});​ 

http://jsfiddle.net/bA3V2/

Смежные вопросы