似乎 knockout 验证插件以某种方式阻止执行点击处理程序。 这是我的简化代码。
HTML:
<div>
<input type="text" data-bind="value: code" />
<button data-bind="click: execute">VALIDATE</button>
</div
Javascript:
<script type="text/javascript" language="javascript">
$(document).ready(function () {
var ViewModel = function () {
var self = this;
this.code = ko.observable();
this.code.extend({ required: true });
this.execute = function () {
if (self.code.isValid()) {
alert("SUCCEED");
}
else {
self.code.valueHasMutated(); //just to show error message
alert("FAILED");
}
};
};
ko.applyBindings(new ViewModel());
});
</script>
我的场景:
- 加载页面
- 点击“VALIDATE”(验证) - 出现错误消息并且警报显示“FAILED”(失败)
- 在输入中输入任何文本,然后立即点击“验证” - 错误消息消失,但不显示任何警报。
- 再次点击“VALIDATE” - 现在才可以看到带有“SUCCEED”文本的警报。
如何解决此问题,以便“验证”按钮在第一次点击后就能正常工作?
谢谢, 伊霍尔
最佳答案
3)你从来没有点击过按钮:D
发生的情况是,当您从字段中失去焦点时,它会验证该字段并删除文本,从而使按钮更改位置,并且您的单击错过了按钮
这个就像你怀疑的那样工作 http://jsfiddle.net/s2bbd/1/
Stackoverflow wont let me post this without code
关于knockout.js - knockout 验证首次阻止点击处理程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13647017/