2013-03-14 3 views
6

Я пытаюсь проверить доступность субдомена с помощью механизма проверки jQuery с помощью настраиваемой функции. Проверка выполняется правильно, но alertText не отображается, если .ajax-запрос возвращает 200. Я добавил Access-Control-Allow-Origin заголовки и могу увидеть успешный запрос в моих журналах.jQuery validation engine custom javascript validation

Что я делаю неправильно?

Javascript Функция:

function validateDomain(field, rules, i, options) { 
    var url = "https://" + field.val() + ".example.com/"; 
    $.ajax(url, 
     { 
      statusCode: { 
       200: function() { 
        //alert('name exists already'); 
        return options.allrules.validate2fields.alertText; 
       } 
      } 
     }); 
} 

поле форма:

<label class="required" for="signup[subdomain]">Subdomain<span>*</span></label> 
    <span>https://</span> 
    <input id="signup[subdomain]" name="signup[subdomain]" class="field field validate[required,funcCall[validateDomain]]" type="text"> 
    <span>.example.com</span> 
+0

Вы можете добавить обработчик ошибок и посмотреть, будет ли он выполняться, мое сомнение - это ошибка синтаксического анализа. –

+2

выглядит как дубликат [Как вернуть ответ от вызова AJAX из функции?] (Http://stackoverflow.com/questions/14220321/how-to-return-the-response-from-an-ajax-call-from-a-function) – Bergi

+1

Вы отметили это как [tag: jquery-validate], так и [tag : jquery-validation-engine], но все же это два совершенно разных плагина. Какой из них вы действительно используете? – Sparky

ответ

0

Проблема заключается в том, что $.ajax является асинхронной функцией и не работает таким образом.

function validateDomain(field, rules, i, options) { 
    var url = "https://" + field.val() + ".example.com/"; 
    $.ajax(url, 
     { 
      statusCode: { 
       200: function() { // [ second function ] 
        return options.allrules.validate2fields.alertText; 
       } 
      } 
     }); 
} 

Проблема заключается в том: ваше возвращение только для [second function] не для validateDomain.

Глядя на документы jquery-validation-engine Я не вижу способ делать то, что вы хотите.