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

Jquery 隐藏敲除绑定中的实际输入值,jquery,knockout.js,internet-explorer-8,knockout-validation,Jquery,Knockout.js,Internet Explorer 8,Knockout Validation,我将knockout.js与ie8一起使用。 敲除绑定: ko.bindingHandlers.placeholder = { init: function (element, valueAccessor, allBindingsAccessor, viewModel, bindingContext) { ko.applyBindingsToNode(element, { attr: { placeholder: valueAccessor() } });

我将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>
问题就在这里。当文本输入被清除时,插件正在设置占位符值。敲除验证读取此值而不是空字符串,因此验证无法正常工作,因为占位符值,它会显示“OK”。 从输入中删除文本后,将进行两次验证检查,第一次检查为空字符串,第二次检查为占位符字符串。有趣的是,对于textarea元素,只有第一个元素,而且一切正常。 我的想法是检查值是否与占位符相同,如果是,则将空字符串转发到验证中。 敲除验证插件已经覆盖了默认的“值”绑定,并将valueAccessor发送到另一个名为“validationCore”的绑定,我想做的是将这一条件插入valueAccessor。 也许有更简单的解决办法?谢谢你的建议


knockout.js 2.3、jquery 1.10.2、placeholder plugin 2.0.7

你能在jsiddle中复制这个问题吗?有没有办法在jsiddleknockout和jquery中同时使用多个库?不作为外部资源?如果不只是在加载正文之前在HTML中包含对脚本的引用,那么外部资源是确保它们首先加载的最简单方法。我认为最简单的方法是编写自定义绑定。可能是
...
    self.productName = ko.observable('').extend({ required: { params: true, message: 'Name of the product cannot be empty.' } });
...