#jquery
#jquery
Вопрос:
У меня есть поле ввода текста, которое я сделал доступным только для чтения, поэтому пользователь не может вводить в него. Однако я обновляю его значение с помощью jquery. Итак, в основном я хочу, чтобы событие срабатывало при изменении его значения с помощью jQuery. Ниже приведен пример разметки ввода и разметки jquery.
<input type="text" readonly="readonly" id="textinput" />
$('#textinput').change(function() {
alert("It's Changed!");
});
Комментарии:
1. Я не верю, что такое событие существует, поскольку разумно предположить, что программист знает, когда он меняет DOM, и может одновременно явно вызывать функцию.
Ответ №1:
Вы не сможете этого сделать. Изменения, внесенные с помощью кода, не запускают события. Вы можете просто вызвать change
непосредственно в своем коде.
Что-то вроде этого:
// do stuff
$('#textinput').val("something").change();
Комментарии:
1. это должно быть выбрано как правильный ответ. также … следует отметить, что каждый сценарий JQ, который включает в себя настройку / изменение .val(), всегда должен привязываться к .val().change(), чтобы событие могло всплывать только для готовых и / или скрытых элементов.
Ответ №2:
Я думаю, что событие ‘change’ срабатывает только тогда, когда текстовое поле теряет фокус. Итак, после изменения значения в вашем коде вам нужно будет сделать —
$('#textinput').trigger('change')
Демонстрация — http://jsfiddle.net/upS2x/1 /
Ответ №3:
Поскольку это ввод только для чтения, вы не можете ввести его, поэтому change, keyup, keydown и keypress не будут работать в отношении этого ввода.
При этом вы должны применить событие к функции, которая изменяет входной текст. Поэтому, если input1 изменяет текст в textinput:
$("#input1").keyup(function(){
$("#textinput").val($(this).val());
});
Я надеюсь, что это поможет.