2013-09-26 121 views
0

我有hasfocus绑定基因敲除验证的问题。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。

回答

0

使用isModified(false)与您在表单加载上验证的observable。

如此来看是这样的:

self.lostfocus.isModified(false) 
0

您可以添加valueUpdate指定何时打电话给你的规则,例如:

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

的问题是,如果用户只需切换到该控制没有按下任何字符我也想显示错误信息。所以valueUpdate不会帮助正确? – Shiras

+0

对,我明白了。在这种情况下,我认为在输入模糊事件上绑定一个函数会起作用,例如,data-bind =“event:{blur:(function name here)}” – proggrock