将onBlur添加到所有表单元素
因此,在特定页面上,我拥有一些表单元素数量,可以是3到8之间的任意值,具体取决于用户及其在页面上的操作。将onBlur添加到所有表单元素
如何在页面上动态添加一个特定的onblur事件到所有的表单元素?
如果我有:
function doThisOnBlur() { stuff }
如何添加相同的功能,所有的这些曾经在页面加载。页面加载后不会创建元素,但不同的用户可能会看到不同的元素。
<input type="text" id="x">
<input type="text" id="y">
<select id="z">...</select>
这可能吗?
编辑:对于更新的问题
使用.blur()
并为此匿名函数(不要紧多少个元素有):
$(":input").blur(function() {
//do stuff
});
如果您需要绑定某些功能在某一特定区域,在名称上使用类或attribute selector,任何可以区分它们的东西......如果选择器没有找到一个元素,它就不会将事件处理程序绑定到任何东西。这样,相同的整体代码适用于全部用户,即使他们只能看到某些的可用表单元素。
对于原来的问题:如果元素被页面加载后动态地添加。
我认为.live()
捕捉blur
事件后,你在这里是什么,使用:input
的选择:
$(":input").live('blur', function() {
//do stuff
});
或'$(“:input”)。blur(function(){..});'实时观看未来元素的页面,如果页面加载后没有添加元素,这并不是真的需要。两者都可以工作。 – 2010-06-24 19:09:19
@Jim - 这个问题在我发布这个答案后进行了编辑以澄清,我将更新以包括他的编辑。 – 2010-06-24 19:14:45
没有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;
我做了最简单的,我可以。我会重构这个,不要这样分配事件处理程序,但我指出要回答你的问题。
这是如何工作的动态添加元素? :) – 2010-06-24 19:09:39
如果你想动态元素绑定,那么我会使用jQuery:活着做到这一点,他们几乎已经把这个功能下到了T恤! – RobertPitt 2010-06-24 19:14:54
不知道为什么我写了这个,我应该检查你的名字,并意识到你发布了一个答案不是问题:/对不起 – RobertPitt 2010-06-24 19:15:45
具体作为每个元素独特?在动态创建的元素上飞行吗? – Matt 2010-06-24 19:02:13