防止淘汰js在页面加载时验证

时间:2015-07-09 19:41:49

标签: javascript jquery html validation knockout.js

我正在使用Knockout验证我的页面,一切正常。在输入模糊时,如果必填字段为空,则文本框旁会显示错误符号*。但是,我在页面底部有一个span标记,我想显示* Required field 当且仅当字段旁边有*时才显示。 我的目的是让跨度类似于

<span data-bind="visible: errors().length > 0"> * Required field </span>

问题是,显然是在页面加载时,我的错误变量的长度来自

errors = ko.validation.group({ variables })

评估我的所有输入是否有错误,因为它们在页面加载时为空或空。有没有办法禁用这个初始验证,但仍然可以验证模糊?如有必要,请求任何代码,但我目前没有看到相关的代码。

1 个答案:

答案 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()

希望有所帮助