У меня есть страница со списком выборки (ASP.NET Страница MVC)
Список выборки и onchange событие указаны как это:
<%=Html.DropDownList("CompanyID", Model.CompanySelectList, "(select company)", new { @class = "data-entry-field", @onchange = "companySelectListChanged()" })%>
Функция companySelectListChanged становится названной дважды?
Я использую изящный код в этом вопросе получить вызывающую сторону.
оба раза вызывающая сторона является onchange событием, однако если я смотрю на вызывающую сторону вызывающих сторон, использующую:
arguments.callee.caller.caller
первый вызов возвращает некоторый системный код как вызывающую сторону (я предполагаю), и вторые неопределенные возвраты вызова.
Я проверяю на неопределенный, чтобы только реагировать однажды на onchange, но это не кажется идеальным, whcy onchange назвали бы дважды?
ОБНОВЛЕНИЕ:
хорошо, найденный преступником!... кроме меня :-) но проблемы вызывания companySelectListChanged функции дважды все еще стоит.
onchange событие установлено непосредственно на выборе, как упомянуто. Это вызывает companySelectListChanged функцию.
.. заметьте класс 'поля ввода данных', теперь в отдельном связанном файле JavaScript, событие изменения на всех полях с этим классом связывается с функцией, которая изменяет цвет кнопки сохранения. Это означает, что на onchange существует два события, но companySelectListChanged называют дважды?
Дополнительная привязка установлена следующим образом:
$ ('.data-entry-field') .bind ('нажатие клавиши keyup изменение', функция (e) {highLightSaveButtons ();});
Предположение, что его возможное имеет 2 события изменения на списке выборки, его, предположило бы, что установка нажатия клавиши и keyup событий может повреждать что-то?
Какие-либо идеи?
ДРУГОЕ ОБНОВЛЕНИЕ:
Избранный элемент выглядит хорошо и все работы, если я удаляю дополнительную привязку 'изменения'. когда привязка 'изменения' добавляется, что событие стреляет однажды, и зашитый 'onchange' запущен дважды.
Если оба события связываются с помощью jQuery все работы хорошо, кажется, что смешивание соединило проводами onchange и jQuery, связанные события изменения не могут быть смешаны? Я предполагаю, что это отвечает на мой вопрос, но походит на проблему с IE и связывающий эти события с jQuery.
Я согласен с вашей оценкой. Я обновил свой небольшой пример на http://gutfullofbeer.net/onchange.html , чтобы включить обработчик jQuery в дополнение к обработчику DOM 0 (тот, который установлен с атрибутом «onchange»). Похоже, это ошибка jQuery или, по крайней мере, неспособность jQuery справиться со странностями IE.
Я зарегистрировал билет jQuery 6593.