Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/66.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
jQuery验证引擎:创建自定义函数时出现问题_Jquery_Asp.net Mvc 3_Validation_Jquery Validation Engine - Fatal编程技术网

jQuery验证引擎:创建自定义函数时出现问题

jQuery验证引擎:创建自定义函数时出现问题,jquery,asp.net-mvc-3,validation,jquery-validation-engine,Jquery,Asp.net Mvc 3,Validation,Jquery Validation Engine,我已经尝试了列出的自定义[function\u name]和funcCall[methodName]方法,但两种方法似乎都不起作用 我的自定义函数如下所示: function einTest(field, rules, i, options) { if (field != null) { var x = field.toString(); if (x.length != 5) { return opt

我已经尝试了列出的自定义[function\u 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>

员工编号(EIN):
但似乎什么都不管用。。。einTest函数未启动

有什么线索吗?

很可能您没有正确地公开该函数。需要对函数进行作用域划分,才能在全局作用域中调用该函数。“使用第三方函数调用验证字段”,基本上意味着它将在
窗口
旁边查找字段

所以首先要做的是确保你的函数是公开的

window.einTest = function(field, rules, i, options) {
接下来要记住的是,字段实际上是包装元素的jquery对象。因此,为了看起来像它的价值或存在,您应该使用
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

//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;
}
<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>
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