Добавьте onBlur ко всем элементам формы

Таким образом на определенной странице у меня есть некоторое число элементов формы, где угодно между 3 и 8, в зависимости от пользователя и их действия на странице.

Как я могу добавить определенное onblur событие ко всем элементам формы динамично на странице?

Если я имею:

function doThisOnBlur() { stuff }

Как я могу добавить ту же самую функцию ко всем ним, после того как страница загружается. Никакие элементы не создаются после того, как загрузки страницы, но различные элементы могут появиться для различных пользователей.

<input type="text" id="x">
<input type="text" id="y">
<select id="z">...</select>

Это возможно?

8
задан Jason 24 June 2010 в 19:04
поделиться

2 ответа

Изменить: Для обновленного вопроса
Используйте для этого .blur () и анонимную функцию (не имеет значения, сколько там элементов):

$(":input").blur(function() {
  //do stuff
});

Если вам нужно привязать определенные функции к определенным полям, используйте классы или селектор атрибутов по имени, что угодно, чтобы различать их ... если селектор не находит элемент, он просто не будет связывать обработчик событий ни с чем. Таким образом, один и тот же общий код работает для всех пользователей, даже если они видят только некоторые доступных элементов формы.


По исходному вопросу : добавлялись ли элементы динамически после загрузки страницы.
Я думаю, что .live () для захвата события blur - это то, что вам нужно здесь, используя : input в качестве селектора:

$(":input").live('blur', function() {
  //do stuff
});
15
ответ дан 5 December 2019 в 07:10
поделиться

Без 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;

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

8
ответ дан 5 December 2019 в 07:10
поделиться
Другие вопросы по тегам:

Похожие вопросы: