2013-09-26 118 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