3

Я пробовал как заказ [function_name] и funcCall [имяМетода] методы перечисленных в documentation, и я не могу получить ни работать.JQuery Validation двигателя: Trouble Создание пользовательской функции

моя пользовательская функция выглядит следующим образом:

function einTest(field, rules, i, options) { 
     if (field != null) { 
      var x = field.toString(); 
      if (x.length != 5) { 
       return options.allrules.ein.alertText2; 
      } 
     } 
     else { 
      return options.allrules.ein.alertText; 
     } 
    } 

и я создал следующее в vaildationEngine-en.js файла:

"ein": { 
       "alertText": "Not a number.", 
       "alertText2": "Must be a 5 digit number." 
    }, 

, и я пытаюсь использовать его на следующее html-поле:

<tr> 
<td><b>Associate Number (EIN):</b></td> 
<td><input type="text" id="EIN" name="EIN" class="validate[required,funcCall[einTest]]" data-prompt-position="inline" /></td> 
</tr> 

, но ничего не работает ... функция einTest не срабатывает.

Любые подсказки?

ответ

0

jsFiddle Demo

Более вероятно, что вы не были должным образом обнажая функцию. Функция должна быть указана для вызова в глобальной области. «Проверяет поле, используя вызов функции третьей стороны» documentation, в основном это означает, что он будет обладать рядом с window.

Итак, первое, что нужно сделать, это убедиться, что ваша функция разоблачена.

window.einTest = function(field, rules, i, options) { 

Следующее, что нужно иметь в виду, это то, что поле фактически является объектом jquery, обертывающим элемент. Поэтому для того, чтобы смотреть такие вещи, как его стоимости или существования, вы должны использовать field.val()

if (IsNumeric(field.val())) { 

вспомогательная функция

//source: http://stackoverflow.com/questions/18082/validate-numbers-in-javascript-isnumeric 
function IsNumeric(input) 
{ 
return (input - 0) == input && (input+'').replace(/^\s+|\s+$/g, "").length > 0; 
} 

Это конечный результат,

HTML

<p>Enter text in the input and then focus out to see the validation at work.</p> 
<b>Associate Number (EIN):</b><br> 
<form> 
<input type="text" id="EIN" name="EIN" class="validate[required,funcCall[einTest]]" data-prompt-position="inline" /> 
</form> 

js

window.einTest = function(field, rules, i, options) { 
if (IsNumeric(field.val())) { 
    var x = field.val(); 
    if (x.length != 5) { 
    return options.allrules.ein.alertText2; 
    } 
} 
else { 
    return options.allrules.ein.alertText; 
} 
}; 

function IsNumeric(input) 
{ 
return (input - 0) == input && (input+'').replace(/^\s+|\s+$/g, "").length > 0; 
} 
//plus library initialization 
Смежные вопросы