我试图在运行ajax函数后清除input
中的值。我使用的是一个简单的函数:$('input[name=foo]').val('')
。输入清除但按钮(根据输入中的字符数启用或禁用)不会再次禁用:
JS:
function viewModel(){
var self = this;
//input
self.foo = ko.observable("");
self.eightChars = ko.pureComputed(function(){
return self.foo().length > 7;
});
//button
self.enable = ko.observable("");
self.enableOk = ko.pureComputed(function(){
return self.eightChars();
});
};
ko.applyBindings(viewModel);
HTML:
<input type='text' name='foo' placeholder='Foo' autocomplete='off' data-bind='textInput:foo'>
<button type="button" data-bind='enable:self.enableOk()'>Save</button>
答案 0 :(得分:2)
答案 1 :(得分:1)
如果在触发change
事件后通知observable,那么尝试更改这样的值:
$('input[name=foo]').val('').change();
或您可以直接设置observable的值而不是输入
val
,但是您需要正确的范围才能执行此操作。
self.foo('');
注意:某些开发人员使用您的方法访问DOM元素以将其清除为变通方法。所以最好的方法是使用observable属性,因为MVVM就是这样做的。