繁体   English   中英

jQuery验证引擎:无法创建自定义函数

[英]jQuery Validation Engine: Trouble Creating a Custom Function

我已经尝试了文档中列出的自定义[function_name]funcCall [methodName]方法,但我似乎无法工作。

我的自定义函数如下所示:

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功能没有触发。

有线索吗?

jsFiddle Demo

很可能你没有正确地暴露这个功能。 该函数需要作用域以在全局范围内调用。 “使用第三方函数调用验证字段” 文档 ,基本上它意味着它寻找它与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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM