2015-09-02 2 views
0

Как создать собственный метод с ajax для jQuery Подтвердить плагин? Я пробовал следующий путь, но валидатор возвращается каждый раз недействительным.Пользовательский метод проверки jQuery для ajax

jQuery.validator.addMethod('customValidator', function (value, element) { 
     $.ajax({ 
      url: '/ajax/validator/', 
      type: 'POST', 
      async: false, 
      data: {field: value}, 
      dataType: 'json', 
      success: function(result) { 
       return result.data.valid; 
      } 
     }); 
     //.fail(function() { 
     // return false; 
     //}); 
    }, ''); 

мне действительно нужно создать новый метод, не может использовать пульт дистанционного управления.

+1

* "не может использовать пульт дистанционного управления" * ~ ** Почему ** Параметр 'remote' метод уже может делать то, что вы запрашиваете?. Реальное решение состоит в том, чтобы просто использовать 'remote' ... это именно то, для чего он был предназначен. – Sparky

+0

Зачем изобретать велосипед? https://github.com/posabsolute/jQuery-Validation-Engine - поддерживает проверку ajax – DinoMyte

+1

Почему вы не можете использовать 'remote'? –

ответ

1

Там нет ничего, что вы можете сделать с .ajax() вы не можете сделать с помощью метода remote, потому что remote является просто оболочкой для .ajax(), не сильно отличается от вашей. remote принимает точно такие же параметры, как .ajax(), потому что это метод jQuery, который используется внутри. В этом случае нет смысла создавать настраиваемый метод для .ajax().

Ваш код ...

jQuery.validator.addMethod('customValidator', function (value, element) { 
    $.ajax({ 
     url: '/ajax/validator/', 
     type: 'POST', 
     async: false, 
     data: {field: value}, 
     dataType: 'json', 
     success: function(result) { 
      return result.data.valid; 
     } 
    }); 
    //.fail(function() { 
    // return false; 
    //}); 
}, 'Invalid national id'); 

Использование remote, это точно так же, за исключением того меньше опций необходимы, потому что они уже по умолчанию.

$('#myform').validate({ 
    rules: { 
     yourfield: { 
      remote: { 
       url: '/ajax/validator/', 
       type: 'POST', 
       async: false, 
       // data: {field: value}, // not needed, field data is sent by default 
       // dataType: 'json', // not needed, already default 
       // success: {}  // not needed, plugin handles response automatically 
      } 
     } 
    }, 
    messages: { 
     yourfield: { 
      remote: 'Invalid national id' 
     } 
    } 
}); 

Документация: http://jqueryvalidation.org/remote-method/

Смежные вопросы