2016-08-03 135 views
0

我有正常的按鈕,我使用jquery進行客戶端驗證。事情是我也想添加服務器端驗證,但是當輸入是類型提交jquery代碼不起作用。當我使用是否可以在沒有提交按鈕的情況下驗證表單?

$('#addperson').submit(function(event){ 
 
    event.preventDefault(); 
 
    //code for client side checks 
 
});

客戶端代碼無法正常工作。請有人知道是否有辦法讓我的按鈕同時在客戶端和服務器端工作?

+0

那是因爲你阻止了默認的行爲。如果表單無效,則防止默認行爲。 – Progrock

+0

1 - 點擊按鈕; 2 - 在客戶端進行驗證; 3 - 發送ajax到服務器端或重定向到你在服務器端驗證的地方 –

+0

請問你是什麼意思的重定向到功能? – princesse

回答

2

只需首先進行表單驗證客戶端,比做$('form').submit()併發送所有信息到服務器。

$('button').click(function() { 
    if (validateMyForm()) { 
     $('form').submit(); 
    } 
}); 

function validateMyForm() { 
    // check if valid 
    [...] 

    return isValid 
} 

<form> 
    <input type="text" name="name"/> 
    <button type="button">Submit</button> 
</form> 
+0

那麼服務器端驗證呢?我的意思是我猜測OP在**提交'form'之前(例如避免重複的用戶電子郵件等)使用一些ajax(異步)來請求服務器和驗證數據服務器端**。你應該使用承諾來處理它。否則,如果不需要等待任何服務器端驗證,那麼您的代碼當然是正確的。編輯:我重讀的問題後,它真的不清楚預計行爲,所以也許我完全錯了 –

+0

我想要的是,如果一個字段已被留空,例如客戶端和服務器端都顯示錯誤消息 – princesse

+0

@ A.Wolff是的,如果使用Ajax並等待響應,則說得對,而不是更復雜,但OP沒有指定任何細節。所以我假設你使用客戶端驗證,而不是使用Ajax調用。 – Justinas

3

'提交事件' 可能會幫助你

var valid = false;  
$("#valid").on('change', function(){ 
    valid = this.checked; 
}) 
$('#form').on('submit', function(e){ 
    console.log(valid); 
    if(!valid) { 
    e.preventDefault(); 
    $('#ipt').val('oops, stopped'); 
    } else { 
    $('#ipt').val('sending'); 
    //yey 
    } 
}); 

工作jsbin: https://jsbin.com/nowirij/4/edit?html,console,output

相關問題