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