jQuery验证引擎:创建自定义函数时出现问题
我已经尝试了列出的自定义[function\u name]和funcCall[methodName]方法,但两种方法似乎都不起作用 我的自定义函数如下所示: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 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