2016-02-05 48 views
0

我想將整個元素傳遞到我的驗證中。敲除驗證需要元素

元素:

<input id="txtPhoneNumber" data-bind="value: Phone, intlTelInput: Phone" name="phone" type="text" class="form-control"> 

JS KO:

  ko.validation.rules['validPhone'] = { 
       validator: function (val) { 
       return val.intlTelInput('isValidNumber'); 
       }, 
       message: 'Invalid Phone Number' 
      } 

我有是我不希望重寫intlTelInput這需要一個元素不只是直值的問題。有什麼建議麼?

+0

爲什麼你需要定義訪問元素?你沒有真正需要這樣做。坦率地說,這不是你應該做的事情,它限制了驗證器的可用性。 –

回答

1

我不認可傳遞元素來淘汰驗證,但如果您真的想這樣做,那麼您可以創建一個自定義綁定,以便通過observable進行驗證,然後從該自定義綁定中,您可以擴展可觀察值給驗證器並將其傳遞給它。

1 ..請驗證

`ko.validation.rules['validPhone'] = { 
    validator: function (val, element) { 
     //do what you want with the element here 
     return val.intlTelInput('isValidNumber'); 
    }, 
    message: 'Invalid Phone Number' 
}` 

2 ..充分利用自定義綁定

ko.bindingHandlers.validPhone = { 
    init: function(element, valueAccessor){ 
     var observable = valueAccessor(); 
     observable.extend({validPhone: element}) 
    } 
} 

3 ..元素應該這樣

<input id="txtPhoneNumber" data-bind="value: Phone, validPhone: Phone, intlTelInput: Phone" name="phone" type="text" class="form-control" >