Jquery バリデーターを使用すると、次の if ステートメントを使用して、Ajax に進む前にフォームが有効であることを確認できます。
var frm = $(this).closest('form');
if($(frm).valid()){
AJAX JQUERY POST INFORMATION GOES HERE
};
現在、Javascript-Coder.com のJavascript Form Validator を使用しています。問題は、valid() と同様の関数や、続行する前にフォームが有効かどうかを確認する方法について説明しているドキュメントがないことです。私は JavaScript が限られているため、コミュニティの助けを借りて同様の if ステートメントを作成できます。
検証を正常に実行していますが、検証が失敗した場合でも、ajax スクリプトは最後まで実行され続けます。非 ajax アプリケーションでは、検証はうまく機能し、php に投稿する前に自動的に停止します。しかし、ajax を使用すると、検証でユーザーがアクションを修正できない場合、スクリプトを停止できないようです。
ここから何かを収集しようとしましたが、何か役に立つことをするのに十分なほど近づくことはできませんでした。そこで提供されているもののいくつかのバリエーションを試しましたが、何かが欠けています。
私の検証はうまく機能し、次のとおりです。
<script type="text/javascript">
var frmvalidator = new Validator("send_message_frm");
frmvalidator.EnableOnPageErrorDisplay();
frmvalidator.EnableMsgsTogether();
frmvalidator.addValidation("desc","alnum","Only numbers and letters are allowed");
frmvalidator.addValidation("desc","req","Please enter a description");
</script>
私の ajax スクリプトも同様に機能しますが、検証が失敗した場合は実行しないようにする必要があります。それは:
$(document).ready(function(){
//Validate form....what can I put here to test if validation is completed properly????
//onclick handler send message btn
$("#send-message").click(function(){
$(this).closest('form').submit(function(){
return false;
});
var frm = $(this).closest('form');
$("#ajax-loading").show();
var data = $(frm).serialize();
$(frm).find('textarea,select,input').attr('disabled', 'disabled');
$.post(
"company_add.php",
data,
function(data){
$("#ajax-loading").hide();
$(frm).find('textarea,select,input').removeAttr('disabled');
$("#send_message_frm").prepend(data);
}
);
}
);
});
</script>