敲除验证需要元素

Knockout Validation Need the Element

我想将整个元素传递到我的验证中。

元素:

<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,它采用的元素不仅仅是一个直接值。有什么建议吗?

我不赞成将元素传递给敲除验证,但如果你真的想这样做,那么你可以创建一个自定义绑定,该绑定将传递要验证的可观察对象,然后你可以从该自定义绑定扩展可观察到验证器并将元素传递给它。

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" >