2013-02-26 5 views
0

Есть ли способ форматировать сообщение на основе результата проверки. У меня есть следующиеСообщения на основе ответа на проверку jquery

jQuery.validator.addMethod("feed", function(value, element) { 
    var retVal = true; 
      //Ajax call here which returns 
      var retMsg = ajax() 

      if(retMsg == "one") { 
       //Show error as "not valid url" 
      } else if(retMsg == "2") { 
       //Show error as "not reachable url" 
      } 
    return retVal; 
}, << CUSTOMIZE MESSAGE HERE BASED ON Validation OUTCOME >>); 

ответ

0

С помощью каждого метода в плагине Validate правила просто проходят/сбой. Когда они терпят неудачу, вы получаете сообщение; когда они проходят, нет сообщения. return true по вашему пользовательскому методу, и вы прошли (нет сообщения) ... return false, и вы терпите неудачу (сообщение).

В плагине по умолчанию «составные правила» обрабатываются несколькими методами. Следующее «соединение правило» обрабатываются с четыре методов, например ...

rules: { 
    myfield: { 
     required: true, 
     digits: true, 
     minlength: 5, 
     email: true 
    } 
} 

Однако, вы пытаетесь сделать «соединение правила» с одним методом.

Итак, логичным решением является то, что вы просто сделаете это как плагин; с двумя уникальными пользовательскими методами. Я предпочитаю эту методологию, потому что нам вообще не нужно вмешиваться в размещение сообщений. И вот как все «сложные» правила уже обрабатываются плагином внутри.

jQuery.validator.addMethod("feedvalid", function(value, element) { 
    //Ajax call here which returns 
    var retMsg = ajax() 

    if (retMsg == "one") { 
     return false; // failed, show message 
    } else { 
     return true; 
    } 
}, "not a valid url"); 

jQuery.validator.addMethod("feedreach", function(value, element) { 
    //Ajax call here which returns 
    var retMsg = ajax() 

    if (retMsg == "2") { 
     return false; // failed, show message 
    } else { 
     return true; 
    } 
}, "not a reachable url"); 

Моделирование: http://jsfiddle.net/At555/

Введите one или 2 в поле ввода "имитировать" ваш Аякса.


«Гадкий» подход:

В качестве альтернативы, вы должны создать & разместить собственное сообщение контейнер отдельно от контейнеров по умолчанию контролируемых плагином. Вам также понадобится логика, которая стирает сообщение каждый раз, когда поле проходит проверку. Это решение работает, но оно очень нетрадиционное, поэтому я не предпочитаю его.

jQuery.validator.addMethod("feed", function(value, element) { 
    //Ajax call here which returns 
    var retMsg = ajax() 

    if (retMsg == "one") { 
     $('#myErrContainer').text("not valid url"); 
     return false; // failed 
    } else if (retMsg == "2") { 
     $('#myErrContainer').text("not reachable url"); 
     return false; // failed 
    } else { 
     $('#myErrContainer').text(); 
     return true; // passed 
    } 
}, ""); 

Моделирование: http://jsfiddle.net/vnpG4/

Введите one или 2 в поле ввода "имитировать" ваш Аякса.