我有正常的按鈕,我使用jquery進行客戶端驗證。事情是我也想添加服務器端驗證,但是當輸入是類型提交jquery代碼不起作用。當我使用是否可以在沒有提交按鈕的情況下驗證表單?
$('#addperson').submit(function(event){
event.preventDefault();
//code for client side checks
});
客戶端代碼無法正常工作。請有人知道是否有辦法讓我的按鈕同時在客戶端和服務器端工作?
我有正常的按鈕,我使用jquery進行客戶端驗證。事情是我也想添加服務器端驗證,但是當輸入是類型提交jquery代碼不起作用。當我使用是否可以在沒有提交按鈕的情況下驗證表單?
$('#addperson').submit(function(event){
event.preventDefault();
//code for client side checks
});
客戶端代碼無法正常工作。請有人知道是否有辦法讓我的按鈕同時在客戶端和服務器端工作?
只需首先進行表單驗證客戶端,比做$('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>
那麼服務器端驗證呢?我的意思是我猜測OP在**提交'form'之前(例如避免重複的用戶電子郵件等)使用一些ajax(異步)來請求服務器和驗證數據服務器端**。你應該使用承諾來處理它。否則,如果不需要等待任何服務器端驗證,那麼您的代碼當然是正確的。編輯:我重讀的問題後,它真的不清楚預計行爲,所以也許我完全錯了 –
我想要的是,如果一個字段已被留空,例如客戶端和服務器端都顯示錯誤消息 – princesse
@ A.Wolff是的,如果使用Ajax並等待響應,則說得對,而不是更復雜,但OP沒有指定任何細節。所以我假設你使用客戶端驗證,而不是使用Ajax調用。 – Justinas
'提交事件' 可能會幫助你
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
那是因爲你阻止了默認的行爲。如果表單無效,則防止默認行爲。 – Progrock
1 - 點擊按鈕; 2 - 在客戶端進行驗證; 3 - 發送ajax到服務器端或重定向到你在服務器端驗證的地方 –
請問你是什麼意思的重定向到功能? – princesse