Текстовое поле jQuery.val('xxxx') не вызывает срабатывания изменений?

StackOverflow https://stackoverflow.com/questions/2247386

  •  20-09-2019
  •  | 
  •  

Вопрос

У меня есть следующий код jQuery на моей странице:

var isChanged = false;
$(document).ready(function()
{
    $('.change').change(function() {
        isChanged = true;
    });
});

Я использую плагин, который изменяет значение текстового поля, с которым он связан, используя:

target.val('xxxx');

текстовое поле в html (из asp.net) является:

<input name="ctl00$cphHolder1$rptFlex$ctl01$txtLeftRank"
  type="text"
  value="52°"
  id="ctl00_cphHolder1_rptFlex_ctl01_txtLeftRank"
  class="change atiselector" />

Когда значение текстового поля изменяется с помощью кода, изменение не выполняется.Если я введу текстовое поле, произойдет изменение.Что я упускаю из виду?

Это было полезно?

Решение

Вот как это работает.Если вам нужно изменение значения для запуска события "change", вы можете явно сделать это с помощью:

$('input#whatever').val('hi').change();

Другие советы

$('.change').change() запустит событие.Простое изменение атрибутов не запускает событие.

Согласно Спецификация события уровня DOM 2:

Событие изменения происходит, когда элемент управления теряет фокус ввода и его значение было изменено с момента получения фокуса.

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top