我在验证加载文档后通过AJAX加载的长格式时遇到问题。使用标准验证语法,验证器在文档存在之前在文档中查找我的表单,因此给出了一个错误:
$(document).ready(function(){
$("#mainForm").validate();
});
firebug回复:
nothing selected, can't validate, returning nothing
我尝试将$("mainForm").validate();
放在一个函数中,然后使用表单中的onSubmit事件调用该函数,但没有运气:
function validate() {
$("mainForm").validate();
};
----------
<form id="mainForm" onSubmit="validate();">
...
</form>
思想?
@Chris的其他一些信息:
我有一个动态创建基于许多不同模块的表单的页面。用户选择适用于它们的模块,然后表单更新并填写该信息。因此,当用户单击链接以加载模块时,将调用loadSection();
函数。这就是loadSection();
函数的样子:
function loadSection(id, div, size, frame) {
var url = "loadSection.php?id=" + id + "&size=" + size + "$frame=" + frame;
$.get(url,
function(data){
$(div).append(data);
});
}
如果我把`$(#mainForm).validate();'在该函数的回调中,每次插入新模块时都有可能被调用。这可能是好的,或者可能是坏的,我不确定如何在同一表单上多次调用验证,即使表单的字段已经改变。
思想?
答案 0 :(得分:1)
你可能遇到了问题。如果在document.ready()的DOM中不存在该表单,则不会绑定任何内容。
由于您正在使用JQuery,我假设使用jquery $ .ajax(或类似)函数添加表单。最直接的解决方案是将$("#mainForm").validate();
添加到AJAX请求的回调函数中。如果您没有使用JQUery ajax,请发布添加表单的代码,我们可以为您提供进一步的帮助。
答案 1 :(得分:0)
您必须将元素的类定义指定为required
才能验证表单中的特定元素。但我猜你没有任何地方,所以它的表现就像那样。
例如,如果您要验证电子邮件:
<p>
<label for="cemail">E-Mail</label>
<em>*</em><input id="cemail" name="email" size="25" class="required email" />
</p>
答案 2 :(得分:0)
选择器"mainform"
中的简单错误不是有效的选择器。添加&#34;#&#34;如果是ID,则为前缀
编辑:还要注意你有另一个内联验证调用,删除那个