jQuery捕获表单上命名输入的所有更改

Bri*_*unt 2 javascript jquery events

我正在尝试确定表单中任何一组命名输入/选择/无线电/选中/隐藏字段何时更改.

特别是,我想捕获何时对匹配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);
}
Run Code Online (Sandbox Code Playgroud)

但是,我很有希望能用一些jQuery魔法来避免这种情况.特别是,有没有办法在jQuery中注册一个事件处理程序,它将处理与以下内容匹配的输入元素:

$("form :input").filter( function () { $(this).attr("name") } ).change(on_change);
Run Code Online (Sandbox Code Playgroud)

但是,只要添加新的输入元素,就会更新此事件.

我认为有可能keyupform节点上捕获事件$("form").keyup(on_change),但我不确定如何捕获change事件.

我也喜欢这个来捕捉keyup事件.

谢谢你的阅读.

布赖恩

SLa*_*aks 6

你正在寻找live活动.
例如:

$(':input[name="something"]'.live('change', function(e) {
    //Do things
});
Run Code Online (Sandbox Code Playgroud)

添加事件处理程序.live将处理与选择器匹配的所有元素的事件,无论它们何时添加.