2011-05-23 265 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()將停止提交表單。