隐藏敲除绑定中的实际输入值

时间:2013-09-20 10:16:29

标签: jquery knockout.js internet-explorer-8 knockout-validation

我正在使用带有validationjquery placeholder plugin的knockout.js作为ie8。 淘汰赛绑定:

    ko.bindingHandlers.placeholder = {
    init: function (element, valueAccessor, allBindingsAccessor, viewModel, bindingContext) {
        ko.applyBindingsToNode(element, { attr: { placeholder: valueAccessor() } });

        $(element).placeholder();
        $(element).focus();
        $(element).blur();
    }
}

用法:

 <div>
     <input type="text" data-bind="placeholder: 'Product name...', value: productName, valueUpdate: 'afterkeydown'" />
     <span data-bind="visible: productName.isValid" class="validationMessageValid">Ok.</span>
     <span data-bind="validationMessage: productName" class="validationMessage"></span>
 </div>

在viewModel中:

...
    self.productName = ko.observable('').extend({ required: { params: true, message: 'Name of the product cannot be empty.' } });
...

这是问题所在。当文本输入被清除时,插件正在设置占位符值。 Knockout验证读取此值而不是空字符串,因此验证无法正常工作,因为占位符值而显示为“OK”。
删除输入文本后,有两个验证检查,第一个是空字符串,第二个是占位符字符串。有趣的是textarea元素只有第一个,一切正常 我的想法是检查值是否与占位符相同,如果是,则将空字符串转发到验证。 Knockout验证插件已经覆盖默认的'value'绑定,并将valueAccessor发送到另一个名为'validationCore'的绑定,我想要做的是将这一条件插入valueAccessor。
也许有一个更简单的解决方案?欣赏任何想法。

knockout.js 2.3,jquery 1.10.2,占位符插件2.0.7

0 个答案:

没有答案