【发布时间】:2012-11-04 12:57:23
【问题描述】:
问题是我要验证的表单位于通过 AJAX 加载的页面上。我试图在页面加载后调用验证引擎,但它似乎不起作用。是否可以使用此插件来验证此类表单?
【问题讨论】:
-
能否展示验证表单的js代码和表单html代码
标签: jquery ajax jquery-validation-engine
问题是我要验证的表单位于通过 AJAX 加载的页面上。我试图在页面加载后调用验证引擎,但它似乎不起作用。是否可以使用此插件来验证此类表单?
【问题讨论】:
标签: jquery ajax jquery-validation-engine
我有同样的问题。验证引擎不适用于通过 AJAX 加载的表单。对我有用的是首先将验证引擎从所有表单中分离出来,然后重新附加:
$('form').validationEngine('detach');
$('#yourform').validationEngine();
具体来说,我是通过 AJAX 在模式弹出窗口中加载表单。这是完整的代码,其中还包括一个关闭弹出窗口的函数:
$('<div>Loading...</div>')
.load(url, function() {
$('form').validationEngine('detach');
$('#yourform').validationEngine();
})
.dialog({
modal: true,
height:400,
width:400,
resizable: false,
draggable: false,
close: function(event, ui) {
$(this).dialog('destroy').remove()
}
});
【讨论】:
我同意@Stefan P. 的一些代码示例会有所帮助。但是,从documentation 看来,您可以简单地将以下内容添加到您的 AJAX 成功处理程序中:
$("#id-of-dynamically-loaded-form").validationEngine();
例如,如果您使用$.load 执行 AJAX 请求,则可能如下所示:
$('#somewhere').load('someurl', function() {
// Instantiate validation-engine
$("#id-of-dynamically-loaded-form").validationEngine();
});
【讨论】:
我遇到了同样的问题,我刚刚通过获取请求获得了整个表单,而 jquery 验证引擎根本无法工作。我搜索了很多,最后我发现如果我们在单击按钮时验证表单,那么我们应该首先断开然后附加验证引擎,因为表单附带了多个事件,因此建议断开连接。
例如,我得到了带有id="Table1" 的表格,然后在save button 上单击我会这样做
$("#Table1").validationEngine('detach');
$("#Table1").validationEngine('attach');
$("#Table1").validationEngine('validate');
在执行$("#Table1").validationEngine('validate');这一行之后,它会给你一个布尔值true or false的返回值,你可以在表单上save or show errors
【讨论】: