我正在使用Knockout验证我的页面,一切正常。在输入模糊时,如果必填字段为空,则文本框旁会显示错误符号*
。但是,我在页面底部有一个span标记,我想显示* Required field
当且仅当字段旁边有*
时才显示。
我的目的是让跨度类似于
<span data-bind="visible: errors().length > 0"> * Required field </span>
问题是,显然是在页面加载时,我的错误变量的长度来自
errors = ko.validation.group({ variables })
评估我的所有输入是否有错误,因为它们在页面加载时为空或空。有没有办法禁用这个初始验证,但仍然可以验证模糊?如有必要,请求任何代码,但我目前没有看到相关的代码。
答案 0 :(得分:0)
errors()包含验证组的所有错误消息。
试试这个:
showRequiredMessage = function() {
for (i = 0; i < errors().length; i++) {
if (errors()[i].indexOf("*") > -1 ) {
return true;
}
}
return false;
}
它检查是否有任何错误消息包含*。
<span data-bind="visible: showRequiredMessage()"> * Required field </span>
这是仅限javascript的解决方案。如果您愿意,也可以使用jQuery。
修改强>
您是否在为验证消息创建 span 元素?如果是这样, 尝试让ko验证为您做到这一点。例如:
var koValidationOptions = {
decorateInputElement: true,
errorElementClass: 'input-error',
insertMessages: true,
errorMessageClass: 'field-error'
};
ko.applyBindingsWithValidation(model, document.getElementById("form1"), koValidationOptions);
否则,如果您希望手动添加 span ,还可以测试用户是否已触及&#39;输入:
visible: yourProperty.isModified() && !yourProperty.isValid()
希望有所帮助