Есть небольшую проблему с Jquery и интересно, если кто-то могут помочьJquery Ajax проверка не работает на Submit
У меня есть форма, которая я проверяющая на размытости
$('form#setAdminUser :input').blur(function() {
var $item = $(this);
var $itemWrapper = $(this).parent();
$itemWrapper.find('input').removeClass('errorRow').end()
.find('span').remove();
// There are other validation rules here I have ommitted..
// Email validation
if (this.id == 'sEmail') {
// Email Unique
if (this.value != '') {
var errorMessage = 'Checking availability';
var emailData = {sEmail: itemValue}
$.getJSON('http://localhost:8501/ems/trunk/www/cfcs/admin_user_service.cfc?method=getAdminUser&returnFormat=json&queryformat=column', emailData,
function(data){
if (data != false) {
var errorMessage = 'This email address has already been registered';
$itemWrapper.find('span').text(errorMessage).addClass('errorInfoFalse').removeClass('errorInfoTrue');
$item.addClass('errorRow');
}
else {
var errorMessage = 'Good';
$itemWrapper.find('span').text(errorMessage);
$item.removeClass('errorRow');
}
})
}
}
Это прекрасно работает, и проверяет, добавлены ли в эту базу адреса электронной почты, добавленные в форму. Если это так, отображается ошибка, если не все будет развиваться.
Затем я снова вызываю эту проверку на форме submit, вызывая размытие полей проверки.
$('#setAdminUser').submit(function(){
$('#submitMessage').remove();
$(':input.conditional').trigger('blur');
$(':input.text_field').trigger('blur');
var numWarnings = $('.errorRow',this).length;
if (numWarnings) {
// Show error messages
}
else {
// Everything is fine, create User
}
return false
})
Если какая-либо из других полей недействительны в то время как поле электронной почты является недействительным, например, пароль слишком коротким, или поля оставить пустыми, когда форма была отправлена, проверка на размытости называется. все ошибки отображаются, включая электронную почту, и пользователь не создается.
Однако, если только поле электронной почты недействительно, ошибки не отображаются, и пользователь создан. Я предполагаю, что это потому, что проверка подлинности электронной почты является аякс-вызовом, и это происходит слишком медленно? Есть идеи? Спасибо
Круто, спасибо за объяснение, я думал, что это может быть Аякса вызов, который вызывает проблемы. Будет изменен код, чтобы включить это. – namtax
Только что поняли проблему с этим вариантом. Когда я отправляю форму, если есть какие-либо ошибки, возвращаемые с помощью проверки getJSON, как я могу показать это пользователю? – namtax
Вы также должны возвращать сообщения об ошибках в JSON. В основном что-то вроде: {"errors": {"email": ["Неверный адрес электронной почты.", "Другая ошибка проверки."], "Other_field": ["Some error."}}} –