我正在关注此示例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
答案 0 :(得分:0)
你的问题和小提琴有几个问题:
<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()};