0

我对 hasfocus 绑定的淘汰赛验证有疑问。

我正在尝试验证控件并在控件失去焦点时显示错误消息。但是当表单加载自身时,规则被触发并显示错误消息。

无论如何,在加载表单或初始化不触发规则时有什么要告诉的?

self.lostfocus = ko.observable(false);
self.lostfocus.extend({ NoBlankValidationlookup: { params: { control: self }, message: "Search Text cannot be empty"} });

ko.validation.rules['NoBlankValidationlookup'] = {
validator: function (val, params)
{
    ////if the control looses focus then validate.
    if (!val)
    {
        if (params.control.Value().length == 0)
        {
            return false;
        }
        else
        {
            return true;
        }
    }
    else
    {
        return true;
    }
},
message: 'Please enter at least 0 characters.'
};

//HTML
<div id="Div1" class="vm" style="display: block !important; text-align: left" data-bind="validationMessage:lostfocus"></div>

请建议。

4

2 回答 2

0

在表单加载时将 isModified(false) 与经过验证的 observable 一起使用。

所以运行这样的东西:

self.lostfocus.isModified(false)
于 2013-09-26T16:19:41.837 回答
0

您可以添加 valueUpdate 以指定何时调用您的规则,例如:

   self.lostfocus.extend({valueUpdate: 'afterKeyDown', NoBlankValidationlookup:
      { params: { control: self }, message: "Search Text cannot be empty"} });
于 2013-09-26T16:20:44.107 回答