如何添加验证淘汰赛

如何添加验证淘汰赛

问题描述:

我在类中的字段:如何添加验证淘汰赛

self.address = ko.observable().extend({ 
    required: true, 
    maxLength: { 
     params: 1000, 
     message: 'Long address' 
    }, 
    validation: { 
     validator: function(val, substring) { 
      return /*...*/; 
     }, 
     message: 'Address not found', 
     params: '' 
    } 
}); 

HTML片段:

<div class="form-additem-group-row__col form-additem-group-row__col_field"> 
    <input type="text" id="addressInput" class="field field_type2 input--full" placeholder="Enter the address" data-bind="textInput: address, geoModuleInput: { mapObject: map, debugSuggestCont: '#currentSuggest', valueText: address, valueKey: addressKey, valueMetroName: metroName, valueMetroDuration: metroDuration, valueGeoCodeResult: geoCodeResult }"/> 
    <div class="form-additem-group-row__error" data-bind="validationMessage: address"></div> 
</div> 

地址处理发生在模块geoModuleInput以及是否地址存在与否。

如果地址不存在,如何调用验证?

+0

你能展示剩下的代码吗?包括geoModuleInput? – Ray

您可以在自定义绑定中使用valueAccessor参数来访问传递给绑定的任何内容,包括可观察的address

ko.bindingHandlers.geoModuleInput = { 
    init: function (element, valueAccessor, allBindingsAccessor) { 
     // if you have any custom binding initialization 
    }, 
    update: function (element, valueAccessor, allBindingsAccessor) { 
     // valueAccessor() has the object that was passed 
     // it has properties like "mapObject", "valueText" etc 
     // or you can also use ko.utils.unwrapObservable(valueAccessor()); 
     var bindingData = valueAccessor(); 

     console.log(bindingData.valueText()) // gives the value in address observable 

     if(bindingData.valueText.isValid()) { 
      alert("the address is valid"); 
     } 
    } 

Here's a fiddle用于测试它。