【问题标题】:Prevent knockout js from validating on page load防止淘汰赛 js 验证页面加载
【发布时间】:2015-09-28 09:05:13
【问题描述】:

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

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

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

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

将我的所有输入评估为有错误,因为它们在页面加载时为空或为空。有什么方法可以禁用这个初始验证,但仍然让它在模糊时验证?如有必要,请索取任何代码,但目前我认为这不是相关的。

【问题讨论】:

    标签: javascript jquery html validation knockout.js


    【解决方案1】:

    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-validation 为你做这件事。示例:

    var koValidationOptions = {
                        decorateInputElement: true,
                        errorElementClass: 'input-error',
                        insertMessages: true,
                        errorMessageClass: 'field-error'
                    };
    
    ko.applyBindingsWithValidation(model, document.getElementById("form1"), koValidationOptions);
    

    否则,如果您更喜欢手动添加 span,您还可以测试用户是否“触摸”了输入:

    visible: yourProperty.isModified() && !yourProperty.isValid()
    

    希望对你有帮助

    【讨论】:

      猜你喜欢
      • 2015-02-28
      • 2012-02-18
      • 2015-06-05
      • 1970-01-01
      • 2013-03-22
      • 2014-10-13
      • 2011-08-09
      • 2012-11-04
      • 1970-01-01
      相关资源
      最近更新 更多