我在页面中有五个表单。我还使用jquery验证插件验证了我的验证。有一个奇怪的小案例,我想覆盖 - 其中服务器没有返回任何结果(对于任何表格),我需要显示相同的jquery验证。我能够做到这一点:
$("#form1").validate().element( ".myid" );
现在我坚持为所有五种形式(分别为五种形式 - 五种形式)实施这一点。
一种方式是传统的if-else方式
var re5digit=/^\d{5}$;
if (document.myform.myid.value.search(re5digit)==-1){
alert("1");
}
(if (document.myform.myid2.value.search(re5digit)==-1){
alert("2");
}
...
OR 问你一个jquery hack,它可以找到我当前的光标位置,我可以调用验证吗? 建议?
答案 0 :(得分:1)
我不确定我是否完全了解您的页面布局和验证是如何设置的,但您可以存储最后一个具有焦点元素的表单:
var lastFocusedForm;
$('input').focus(function() {
lastFocusedForm = $(this).parents('form');
});
// and then when you need to validate...
lastFocusedForm.validate().element( ".myid" );
答案 1 :(得分:0)
我认为您需要使用一种不同的方法。每个验证请求都应属于确切的形式。使用您的方式,例如,第一个表单的验证消息将以第二个形式显示时,很容易创建情境。为了避免此类错误,您应该为表单分配唯一ID,并在ajax提交函数中使用javascript闭包(http://odetocode.com/Blogs/scott/archive/2007/07/10/closure-on-javascript-closures.aspx和http://www.jibbering.com/faq/faq_notes/closures.html)。
$(document).ready(function(){
var form = $("#ajax-form");
form.submit(function(){
$.post(
"/controller/path",
form.serialize(),
function(receivedData){
alert(receivedData);
form.whateveryouwant(); // do whatever you want with your form
}
);
});
});