Поле ввода jquery изменяется даже при изменении значения через jquery - PullRequest
5 голосов
/ 10 февраля 2012

Я пытаюсь захватить при изменении значения поля ввода текста.Я использую:

$("input[name=color]").change(function(){

Это работает, если я ввожу новое значение напрямую.Однако значение поля ввода изменяется с помощью jquery.Есть несколько из этих полей, и мне нужно знать, когда какие-либо изменились.Есть ли способ обнаружить это изменение?

Извините, мне неясно.Я не тот, кто меняет значение.Это аддон, который я бы предпочел не изменять в случае, если мне нужно перенести его в другой проект.

РАБОЧАЯ РАБОТА

Хорошо, так что вы не можете делатьЯ хотел сделать, но здесь есть обходной путь.Я просто сделал интервал и изменил свое событие change на событие each.

setInterval(function(){
    $("input[name=color]").each(function(){ my code })
},100);

Ответы [ 4 ]

11 голосов
/ 10 февраля 2012

Нет способа обнаружить изменения, сделанные программно.

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

$("input[name=color]").val("newValue").change();
2 голосов
/ 10 февраля 2012

При изменении значения с помощью jquery вы можете впоследствии запустить событие изменения с помощью jquery

$("input[name=color]").val('someValue').trigger('change');
1 голос
/ 10 февраля 2012

Нет, событие onchange не будет вызываться при изменении значения с помощью JavaScript. В качестве альтернативы вы можете вызвать событие onchange при изменении значения.

0 голосов
/ 24 апреля 2016

Один из вариантов - отслеживать значение, выходящее за рамки вашего слушателя

function foo () {
  var value = null;
  $("select#thingy").on("change", function (e) {
    let p = $(this).children("#choose-me").val();
    value = value === p ? null : p;
    $(this).val(value);
  });
}

$(function() {
  foo();
})
...