因此,在特定页面上,我有一些表单元素,在3到8之间,具体取决于用户及其在页面上的操作。
如何在页面上动态地向所有表单元素添加特定的onblur事件?
如果我有:
function doThisOnBlur() { stuff }
如果页面加载,如何将相同的功能添加到所有这些功能。页面加载后不会创建任何元素,但可能会为不同的用户显示不同的元素。
<input type="text" id="x">
<input type="text" id="y">
<select id="z">...</select>
这可能吗?
答案 0 :(得分:15)
编辑:更新问题
使用.blur()
和匿名函数(无论有多少元素):
$(":input").blur(function() {
//do stuff
});
如果你需要将某些函数绑定到某些字段,请在名称上使用类或attribute selector,以区分它们......如果选择器找不到元素,它就不会绑定事件处理任何东西。这样,相同的整体代码适用于所有用户,即使他们只看到某些可用的表单元素。
原始问题:如果在页面加载后动态添加元素
我认为.live()
捕获blur
事件是您在此之后所使用的:input
作为选择器:
$(":input").live('blur', function() {
//do stuff
});
答案 1 :(得分:8)
没有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;
我尽可能地做到最简单。我会重构它并且不以这种方式分配事件处理程序,但我指出回答你的问题。