я использую Laravel JsValidation
, JsValidation
работает правильно с другими формами, но поскольку я должен отправить форму с помощью Ajax, JsValidation не работает должным образом, и форма отправлена.
$validator = JsValidation::make($rules);
и ввиду
{!!$validator!!}
Поскольку вызов проверки является асинхронным, пометьте его как синхронный, выполнив:
async: false
[опционально] и чтобы запретить отправку формы по умолчанию, выполните:
e.preventDefault();
при нажатии кнопки отправки. После проверки вы получите ответ на основе этого ответа, вы можете разрешить отправку формы или нет.
Простой фрагмент кода:
$("#form-submit").on('submit', function(){
var errorMsg = 'Please provide your correct information.';
$(".errorMsg ").text("");
var txtName = $("input#txtName").val();
var responseStatus = false;
var userData = {
'name' : txtName
};
$.ajax({
type: 'POST',
url: '/validate-data',
async: false,
data: userData,
success: function(result){
if(result.status === true){
responseStatus = true;
} else {
responseStatus = false;
errorMsg = result.message;
$(".errorMsg ").text(errorMsg);
return false;
}
},
error: function (xhr, ajaxOptions, thrownError) {
alert('Oops! Something went wrong. Please try again.'); return false;
}
});
if(responseStatus === false){
return false;
} else {
return true;
}
});
Видите, если это поможет.
Попробуйте использовать этот фрагмент:
$('form').on('submit', function() {
if($(this).valid()) {
// do your ajax stuff here
}
return false;
});