2011-06-06 74 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'}});}); 

这对我的作品。 希望它也能帮助你。