实时验证自定义验证器
问题描述:
我跟着这个例子,http://livevalidation.com/documentation#ValidateCustom,检查是否两个字段都被填充。所以如果第一个字段不是空白,第二个字段不能为空,反之亦然。实时验证自定义验证器
任何人都可以找出为什么这段代码不工作?
var txtFirstName = new LiveValidation('txtTaco', {onlyOnSubmit: true });
txtFirstName.add(
Validate.Custom(1, { against: function(value,args){
if(args.first||args.last){
if(args.first&&args.last){
return true;
} else {
return false;
}
}
},
args: {
first:txtTaco.value,
last:lastName.value}
}) //end custom
); // end add
答
有你的问题和小提琴几个问题:
- 您在脚本中包含部分,它是GitHub的网页,而不是代码this link。
- 不能热链接github上,要做到这一点,你需要使用rawgithub.com
- 这种验证是在第一个文本框,而不是第二
- 你逝去的“1”值只工作自定义,这是不被使用
- 您的代码不包括
<form>
,所以onlyOnSubmit
永远不会触发 - 你
<input>
标签没有被关闭 - 你并不需要
if (condition) { return true } else { return false }
,只是return (condition)
- 你并不需要通过值作为指定参数时,只需获得这些功能里面,它的清洁和作品一样好
- 不要使用晦涩的名字,如
txtTaco
与解决工作,我发现了一些问题,livevalidation:
- 您需要使用一个未公开的参数
displayMessageWhenEmpty
验证时,该字段为空 - 有隐藏
validMessage
的错误。根据对源代码的评论,您需要将其设置为false以隐藏它,但这不起作用。所以我只是把它放到一个空间。
我只做了一个验证器,用于姓。当你改变名字时,它会调用姓氏验证器。缺点是,如果您设置无效字段的边框颜色,则只会改变姓氏。
下面是最终代码:
var valLastName = new LiveValidation('txtLastName', {validMessage: " "});
function validateFunction() {
var first = txtFirstName.value;
var last = txtLastName.value;
if (first || last) // If either are present...
return (first && last); // ...both must be present
return true;
}
valLastName.add(Validate.Custom, {
against: validateFunction,
failureMessage: "Please enter both first and last name",
displayMessageWhenEmpty: true
});
// Force validation of txtLastName
txtFirstName.onkeyup = function() {txtLastName.onkeyup()};
如果您正在测试这个完全属于的jsfiddle,我注意到,Chrome的努力包括'livevalidation_standalone.js'时抛出一个错误。特别是:'拒绝执行'https://github.com/alechill/livevalidation/blob/master/src/livevalidation_standalone.js'脚本,因为它的MIME类型('text/html')不可执行,严格的MIME类型检查已启用。 '。验证是否在本地服务器上工作? –