2015-11-10 134 views
0

我正在使用JQuery驗證插件,但不幸的是,它與我正在使用的另一個插件無法正常工作。因此,我正在編寫我自己的自定義驗證。目前我有這樣的東西表單上的JQuery自定義驗證

function doValidation(formData, jqForm, options) { 

    var fullName = $.trim($("#fullName").val()); 
    var emailAdd = $.trim($("#emailAdd").val()); 
    var aNum = $.trim($("#aNum").val()); 

    if(fullName.length == 0) { 
     alert("Please enter your full name"); 
     return false; 
    } 

    if(fullName.length > 50) { 
     alert("Name is to long"); 
     return false; 
    } 

    if(!validateEmail(emailAdd)) { 
     alert("Invalid email"); 
     return false; 
    } 
} 

function validateEmail($email) { 
    return /^(([^<>()[\]\\.,;:\[email protected]\"]+(\.[^<>()[\]\\.,;:\[email protected]\"]+)*)|(\".+\"))@((\[[0-9{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/.test($email); 
} 

現在顯然我不想提醒錯誤,這是爲了測試。我也不想在所有這些方面回報錯誤。

我想要做的是將所有的錯誤添加到數組或其他東西,因爲如果驗證失敗,我需要顯示所有的錯誤。如果驗證失敗,我還需要返回false,因此我的表單不提交。每個輸入可能有多個驗證規則,但只有一個會隨時觸發。

我該怎麼做呢?我正在尋找所有錯誤附加到一個ID與驗證結果。

任何意見讚賞。

感謝

回答

1

你可以存儲在陣列中的消息:

function doValidation(formData, jqForm, options) { 
    var errors = [];  

    var fullName = $.trim($("#fullName").val()); 
    var emailAdd = $.trim($("#emailAdd").val()); 
    var aNum = $.trim($("#aNum").val()); 

    if(fullName.length == 0) { 
     errors.push("Please enter your full name") 
    } 

    if(fullName.length > 50) { 
     errors.push("Name is to long") 
    } 

    if(!validateEmail(emailAdd)) { 
     errors.push("Invalid email") 
    } 
    if (errors.length > 0) { 
     $('#validation-results').html(errors.join('<br>')); 
     return false; 
    }  
    return true; 
} 

現在,爲了避免表單執行:

你可以得到表格,並根據結果o您是否發送驗證方法。

希望這有助於!

+0

謝謝。應該是錯誤嗎? –

+0

是的,它是錯誤的 – Ele