Таким образом на определенной странице у меня есть некоторое число элементов формы, где угодно между 3 и 8, в зависимости от пользователя и их действия на странице.
Как я могу добавить определенное onblur событие ко всем элементам формы динамично на странице?
Если я имею:
function doThisOnBlur() { stuff }
Как я могу добавить ту же самую функцию ко всем ним, после того как страница загружается. Никакие элементы не создаются после того, как загрузки страницы, но различные элементы могут появиться для различных пользователей.
<input type="text" id="x">
<input type="text" id="y">
<select id="z">...</select>
Это возможно?
Изменить: Для обновленного вопроса
Используйте для этого .blur ()
и анонимную функцию (не имеет значения, сколько там элементов):
$(":input").blur(function() {
//do stuff
});
Если вам нужно привязать определенные функции к определенным полям, используйте классы или селектор атрибутов по имени, что угодно, чтобы различать их ... если селектор не находит элемент, он просто не будет связывать обработчик событий ни с чем. Таким образом, один и тот же общий код работает для всех пользователей, даже если они видят только некоторые доступных элементов формы.
По исходному вопросу : добавлялись ли элементы динамически после загрузки страницы.
Я думаю, что .live ()
для захвата события blur
- это то, что вам нужно здесь, используя : input
в качестве селектора:
$(":input").live('blur', function() {
//do stuff
});
Без jQuery:
function doThisOnBlur(){
// your fancy code
}
var inputs = document.getElementsByTagName('input');
var selects = document.getElementsByTagName('select');
for (var i = 0; i < inputs.length; i++)
inputs[i].onblur = doThisOnBlur;
for (var i = 0; i < selects.length; i++)
selects[i].onblur = doThisOnBlur;
Я сделал это как можно проще. Я бы реорганизовал это и не назначал обработчики событий таким образом, но я указал, чтобы ответить на ваш вопрос.