2016-01-21 34 views
0

所以我试图获得一些验证,以便使用基因敲除验证。我创造了这个小提琴来证明我的问题:https://jsfiddle.net/utjmLhxa/7/重新评估依赖字段上的错误消息,并进行基因敲除验证

当我改变“数量”和我已经有“双量”的错误信息,我想它更新的错误消息。验证有效时它似乎消失,但如果它仍然无效,它不会更新。

是否有可能获得基因敲除验证来重新评估文本?如果是这样,怎么样?它似乎做了一些重新评估,因为错误消失时,该字段是有效的。

实施例:

  1. 在数量输入2
  2. 在双人量输入2,示出了错误,它必须是至少4
  3. 在数量输入3,对于双数量错误消息仍然是在数量 相同
  4. 输入1,用于双人量错误信息消失

下面是代码的jsfiddle:

<div id="vm"> 
    <span>Quantity</span> 
    <input type="number" data-bind="value: quantity"/><br/> 
    <span>Double quantity</span> 
    <input type="text" data-bind="value: doubleQuantity"/> 
</div> 

ko.validation.registerExtenders(); 
var Vm = function(){ 
    var self = this; 
    self.quantity = ko.observable().extend({ max: 5 }); 
    self.doubleQuantity = ko.observable().extend({validation: { 
       validator: function (val) { 
        this.message = 'must be at least ' + self.quantity() * 2 
        return val >= 2 * self.quantity(); 
       }, 
       message: '' 
      } }); 
}; 
ko.applyBindings(new Vm(), document.getElementById('vm')); 

使用https://knockoutjs.com/downloads/knockout-2.2.1.jshttps://cdnjs.cloudflare.com/ajax/libs/knockout-validation/1.0.2/knockout.validation.min.js

+0

你需要使用这些过时的库? –

+0

我认为这将有助于:http://stackoverflow.com/questions/17582154/knockout-validation-message-based-set-in-the-validation-function –

回答

2

它看起来像错误消息,如果相关字段修改没有更新(试过,但无法管理,使其工作)。

一个解决办法是在其上触发doubleQuantity进行重新评估,模拟值已通过对观察到每当dependent变化呼唤valueHasMutated改变。添加以下里面,在你的虚拟机的结尾:

self.quantity.subscribe(function(){ 
    self.doubleQuantity.valueHasMutated(); 
}); 

工作fiddle

+0

我实际上试图解决它完全是这样的,但我没有意识到valueHasMutated()函数。谢谢! – Markus