我想知道在初始设置规则时是否可以让jQuery Validator插件验证dom中尚不存在的元素。
调用.Rules(“add”,therules)方法只会将规则附加到当前存在于dom中的元素。如果我要创造一些。验证不会触发。有什么想法吗?
我正在使用的验证器的主页:http://bassistance.de/jquery-plugins/jquery-plugin-validation/
通过http://ejohn.org/blog/javascript-micro-templating/
创建新元素基本上有一个ajax调用,服务器返回一堆json(ajaj?),这个json是通过resig的模板引擎来完成的。示例模板如下所示:
<script type="text/html" id="ProductsTemplateEdit">
<td>
<input type="hidden" value="<#= item.ID #>" id="Edit.ID" name="Edit.ID" />
<input type="text" value="<#= item.Price#>" id="Edit.Price" name="Edit.Price" />
</td>
</script>
值显然是通过传入的json填充的。
我还应该提一下,我正在使用xval验证框架,它基本上自动为我生成jquery验证规则:http://blog.codeville.net/2009/01/10/xval-a-validation-framework-for-aspnet-mvc/
答案 0 :(得分:2)
好的,试试两个。什么是动态添加元素?你不能把.Rules(“add”,)放在同一个代码上吗?
答案 1 :(得分:2)
嘿,不确定这是不是一个不礼貌的黑客,但它对我有用。在此之前,我在选择器上执行each()并遇到与新创建的Ajaxed元素相同的问题。
现场的Mouseover事件似乎已经完成了这个技巧,因为你的css不会让你疯狂:
// >>> MSG/Comment form validator, now and forever...
$('form.streamForms').live('mouseover', function(){
$(this).validate({
rules: {
text: "required"
},
messages: {
text: " "
}
});
});
希望它有所帮助!
答案 2 :(得分:0)
您将需要查看jQuery 1.3的新Live Events
答案 3 :(得分:0)
以下是我处理此问题的方法。首先,我创建了验证对象。
var myvalidations = {}; myvalidation.registerform = function() { $("#registerform").validate({ submitHandler: function(form) { $(form).ajaxSubmit(optionspersonal); //submitReg(); }, rules: { firstname: { required: true, minlength: 5, maxlenght: 22 }, messages: { firstname: { required: "Tell us what to call you by.", minlength: "Your username must consist of at least 5 characters" } } }); }
现在,每当您创建表单时,请确保其上有ID或稍微引用它,并在创建后立即调用您的函数。
//create my content $('.content').html('--fields etc--'); //add validation myvalidation.registerform();
欢迎任何进一步的建议;但我认为基本上这是正确的做法。