2011-05-23 208 views
1

我刚刚放了一个很好的表单,花了我几个小时,一些natty jQuery焦点验证。 focusout属性附加到输入字段onload。然后我通过触发注销事件onsubmit重新使用我的验证功能,但我不知道如何禁用表单提交,如果我的任何验证功能失败。完整的例子here (jsfiddle)jQuery停止表单提交

切开例如:

addLoadEvent(AttachVal);

功能AttachVal(){

$('input[name="FirstName"]').focusout(NameTest); 
    $('input[name="LastName"]').focusout(NameTest); 
    $('form[name="Register"]').submit(SubmitRegForm); 

}

功能SubmitRegForm(){

$('input[name="FirstName"]').trigger('focusout'); 
    $('input[name="LastName"]').trigger('focusout'); 
    alert ("Submitting");  

返回 假;
}

验证功能:

function NameTest(){ 

var result = true;   
var EnteredValue = $(this).val(); 
var alphaExp = /^[a-zA-Z ]+$/; 

    if (!(EnteredValue.match(alphaExp))) 
    { 
     var result = "Invalid"; 
    } 

    if (result !== true) 
    { 
     $(this).parent().next().children('span.ErrorDescript').text(result); 
    } 
    else 
    {   
     $(this).parent().next().children('span.ErrorDescript').text("");   
    } 

}

我试图在SubmitRegForm功能附加变量是这样的:

var FNStat = $('input[name="FirstName"]').trigger('focusout'); 

的意图检查它们所有并提交,如果他们都返回true,但只是返回一个对象。是否有可能从该功能获得响应文本?......也许?还是有另一种方法来强制停止当前正在我的个人验证功能中运行的提交事件?

一如既往,任何建议非常感谢。

+0

为什么布尔值更改为字符串?应该将其设置为false而不是“无效”。 – robx 2011-05-23 22:54:17

+0

你看过jQuery Validate吗?它会为你节省很多代码。 http://docs.jquery.com/Plugins/validation,http://bassistance.de/jquery-plugins/jquery-plugin-validation/ – 2011-05-23 23:12:12

回答

1

Here's an updated fiddle.我所做的只是在SubmitRegForm()方法的返回中,看看有多少个刻度图像可见,以及它是否为零,然后提交表单。

+0

这是一个好主意!谢谢! – 2011-05-23 23:03:48

2

赶上表单提交正确的方法是这样的:

$('#form').submit(function(e){ 
    // Unfocus and validation logic here. 
    e.preventDefault(); 
}); 

e.preventDefault()将停止提交表单。