2016-08-03 13 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がいくつかのajax(async)を使ってサーバをリクエストし、** form **を提出する前に**データサーバ側を検証していると思います(重複したユーザの電子メールを避けるなど)。あなたはそれを処理するために約束をするべきです。それ以外の場合は、サーバーサイドの検証を待つ必要がなければ、コードはもちろん正しいです。編集:私は質問を再読した後、それは実際には何が予想される動作は不明なので、おそらく私は完全に間違っている –

+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

関連する問題