2010-06-10 83 views
2

我試圖確定窗體中的任何一組命名輸入/選擇/無線電/選中/隱藏字段的更改。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); 

然而,有這樣的活動集更新,只要添加新的輸入元素。

我認爲這是可能的form節點上捕捉keyup事件與$("form").keyup(on_change),但我不是很確定一個能捕捉怎麼事件change

我也想這樣捕獲keyup事件。

謝謝您的閱讀。

布賴恩

回答

6

您正在尋找live events
例如:

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

添加使用.live將處理選擇不管匹配,加入時,他們的所有元素的事件處理器。

+1

你可以這樣做:輸入[name]來獲取所有命名的元素。 – 2010-06-10 22:47:11

+0

是的,'$(':input [name]')。live('onkeyup',foo);'按預期工作。這真是太酷了! – 2010-06-11 01:26:33