Вызывает событие “onChange”, когда элемент ввода изменен JavaScript из всплывающего окна

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

Вопрос

У меня есть веб-страница с элементом формы и всплывающим окном (открывается window.open).

У обоих есть доступный jQuery.

Всплывающее окно имеет javascript, который может изменять элемент формы в окне открытия.Это прекрасно работает при выполнении...

$(opener.document.formelement).val(vals[0]);

Однако, сделав это, событие onChange не сработает.Однако это потребовалось бы для некоторых других элементов страницы.Поэтому я попытался запустить событие onChange самостоятельно с помощью

$(opener.document.formelement).change();

Но это ничего не дает.

Какие-нибудь намеки?Мне определенно нужно, чтобы это событие onChange было запущено из-за архитектуры других элементов страницы.

Этот вопрос похож на Вызовите событие Javascript onchange, программно изменив значение текстового поля, но предлагаемые решения из этого вопроса, похоже, не работают для меня.Может быть, это из-за всплывающего окна.

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

Решение

Возможно, это перекрестное окно причиняет вам боль...Попробуйте создать функцию внутри opener, которую вы вызываете вместо этого.Может помочь?

В открывалке:

window.changeMyElement = function(value) {
  $(formelement).val(value).change();
}

Из всплывающего окна:

opener.changeMyElement(value);

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

Эта линия должна работать:

$(opener.document.formelement).change();

Согласно jQuery Документация эта строка запускает событие изменения каждого сопоставленного элемента.

Если у вас это не работает, значит, где-то в вашем коде есть проблема.Можете ли вы вызвать событие onchange, изменив элемент формы вручную?

Вы также можете сделать:

window.opener.document.getElementById('controlname').fireEvent('onchange');

Или в вашем контексте:

$(opener.document.formelement).fireEvent('onchange');
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top