だから私はjquery-form-validatorプラグインを使用して送信する前に検証するフォームを持っています! しかし、ここでの問題はsuccess
、ステップごとに実行されたときに、書かれたいくつかの行が実行されないことです。ただし、 で実行するconsole
か、 で実行するとdebugger
正常に動作します。実に気の毒な振る舞いだ!! これから来る回避策はありますか?
JS
$.validate({
form:'#contact-form',
onError: function () {
toastr.error("Please correct the below errors!", "Error");
return false;
},
onSuccess: function () {
$("#btnContactUs").button('loading'); //Not getting called
$('.form-contact form').find('input,textarea').attr('readonly', true).addClass('disabled'); //Not getting called
var formdata = new FormData($('.form-contact form').get(0));
$.ajax({
url: $("#contact-form").attr('action'),
type: 'POST',
data: formdata,
processData: false,
contentType: false,
success:function(data)
{
if(data.result)
{
toastr.success(data.message, "Success");
$('.form-contact form').get(0).reset();//Check this
}
else
{
toastr.error(data.message, "Error");
}
},
error:function(data)
{
toastr.error(data.message, "Error");
}
});
$("#btnContactUs").button('reset');
$('.form-contact form').find('input,textarea').attr('readonly', false).removeClass('disabled');
return false; // Will stop the submission of the form
}
});
検証が成功すると、ajax を介して Controller メソッドが呼び出されますが、最初の 2 行は実行されません。
更新:ボタンは、読み込み中のテキストを表示する機能を#btnContactUs
持つブートストラップ ボタンです。.button