2016-10-31 3 views
0

Я пытаюсь использовать специальный валидатор js parsley для проверки уникального адреса электронной почты в моей форме. Однако это не препятствует отправке формы, когда мне не важно, что я верну.Уникальное имя пользователя с parsley js

Аякса запрос checkEmailExists возвращает истину или ложь в зависимости от того, если адрес электронной почты существует

window.Parsley 
    .addValidator('uniqueUsername', { 
    requirementType: 'string', 
    validateString: function(value, requirement) { 
     $.ajax({ 
     url: "checkEmailExists", 
     data: {username: value}, 
     dataType: 'json', 
     method: 'POST', 
     data: { email: $("#email").val() }, 
     async: false, 
     success: function(data) { 
      return data; 
     } 
     }); 
    }, 
    messages: { 
     en: 'This email address already exists!' 
    } 
    }); 

<input type="text" id="email" name="email" placeholder="Email" data-parsley-uniqueUsername data-parsley-required="true" data-parsley-type="email"/> 

ответ

1

Обещание вы возвращаете должны потерпеть неудачу или успех, не удастся с true или false.

Самый простой способ, вероятно, использовать валидатор remote.

Не относится к делу, но для таких идемпотентных запросов вы должны использовать GET, а не POST.

0

Как Марк сказал, ваше обещание должно неудачу для успеха, а также ваше имя валидатор не может иметь заглавные буквы и специальные символы, так что попробовать что-то вроде этого:

// uniqueUsername validator 
window.Parsley.addValidator('uniqueusername', { 
    validateString: function (value, requirement) { 

     xhr = $.ajax({ 
      url: "users_list_ajax.php", 
      dataType: 'json', 
      method: 'GET', 
      data: { 
       action: 'checkUserExists', 
       username: value 
      } 
     }); 

     return xhr.then(function (data) { 
      console.log((data.isUnique == 0)); 

      if (data.isUnique == 0) { 
       return true; 
      } else { 
       return $.Deferred().reject(); 
      } 
     }); 
    }, 
    messages: { 
     en: 'Username already exists!', 
     ar: 'إسم المستخدم موجود مسبقا' 
    }, 
    priority: 32 
});