2011-06-06 73 views
4

在ASP.Net中,我使用jQuery.tmpl動態添加控件。帶動態添加控件的jQuery驗證插件

我正在使用$("#form1").validate();初始化$(document).ready() function中的驗證器,我的動態控件有class="required",我在點擊事件時調用$("#form1").valid()

頁面上的靜態控件驗證,但動態添加的控件不。這裏有什麼問題?

此外,動態控件使驗證器行爲怪異,顯示和隱藏驗證消息,因爲我點擊不同的控件。

例子:http://jsfiddle.net/wY6xt/2/

回答

1

的問題是,該插件需要控制正在驗證有唯一的名字。這裏添加的控件都具有相同的名稱,因此該插件表現瘋狂。

這裏是固定唯一的名稱上班例如:http://jsfiddle.net/wY6xt/3/

1

你將規則添加到您動態添加控件?看看這個link。下面是給出的方法。我認爲,由於控件是隨時添加的,因此無法將規則(在您的案例類中)與控件相關聯(我不太確定,但我認爲值得一試)。

$("#txtEmail_1").rules("add", "required"); 

HTH

+0

這可能會奏效,但我希望避免這種情況。我在一些非常舊的帖子中看到有一個'.refresh()'方法,但它已被刪除。 – Homer 2011-06-06 18:44:56

+0

這個http://docs.jquery.com/Plugins/Validation/Reference#中有兩個陷阱Fields_with_complex_names_.28brackets.2C_dots.29帶有方括號和點以及多種形式的字段。 HTH – Raja 2011-06-06 19:11:26

+0

我不認爲這適用。這些控件沒有名稱,只有一種形式。 – Homer 2011-06-06 19:34:38

0

我有同樣的問題。 由於唯一的名稱/ ID約束,Jquery驗證無法應用於動態添加的動態控件。 我的解決方案是將一個特殊的類名稱添加到您的動態控件中,並使用類名進行驗證。 在你的問題你的動態控制,有「需要」一類的名字,這樣你就可以做到以下幾點,

$(.required).each(function(){ $(this).rules('add', {required:true, messages:{required: 'Required Field'}});}); 

這對我的作品。 希望它也能幫助你。