我正在尝试确定表单中任何一组命名输入/选择/无线电/选中/隐藏字段的更改时间。
特别是,我想捕获对匹配jQuery的选择器$("form :input")
的字段进行任何更改,以及该输入具有name
属性的位置。但是,表单不是静态的,即稍后会动态添加一些字段。
我最初的想法是跟踪添加了与:input
匹配的新命名元素的时间,然后添加一个事件处理程序,如下所示:
function on_change() {
alert("The form element with name " + $(this).attr("name") + " has changed");
}
function reg_new_e_handler(input_element) {
input_element.change(on_change);
}
然而,我很有希望能用一些jQuery魔法来避免这种情况。特别是,有没有办法在jQuery中注册一个事件处理程序来处理与以下内容匹配的输入元素:
$("form :input").filter( function () { $(this).attr("name") } ).change(on_change);
但是,只要添加新的输入元素,就会更新此事件。
我认为可以使用keyup
在form
节点上捕获$("form").keyup(on_change)
事件,但我不确定如何抓取change
} events。
我也希望捕获keyup
个事件。
感谢您的阅读。
布赖恩
答案 0 :(得分:6)
您正在寻找live
events
例如:
$(':input[name="something"]'.live('change', function(e) {
//Do things
});
使用.live
添加事件处理程序将处理与选择器匹配的所有元素的事件,无论它们何时被添加。