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

时间:2010-06-10 22:35:44

标签: javascript events jquery

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

特别是,我想捕获对匹配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);

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

我认为可以使用keyupform节点上捕获$("form").keyup(on_change)事件,但我不确定如何抓取change } events。

我也希望捕获keyup个事件。

感谢您的阅读。

布赖恩

1 个答案:

答案 0 :(得分:6)

您正在寻找live events 例如:

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

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