hasfocus绑定的Knockout验证

时间:2013-09-26 16:15:03

标签: javascript jquery knockout.js

我对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>

请adivce。

2 个答案:

答案 0 :(得分:0)

在表单加载时使用isModified(false)和已验证的observable。

所以运行这样的事情:

self.lostfocus.isModified(false)

答案 1 :(得分:0)

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

   self.lostfocus.extend({valueUpdate: 'afterKeyDown', NoBlankValidationlookup:
      { params: { control: self }, message: "Search Text cannot be empty"} });