knockout.js - knockout 验证首次阻止点击处理程序

标签 knockout.js knockout-validation

似乎 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>

我的场景:

  1. 加载页面
  2. 点击“VALIDATE”(验证) - 出现错误消息并且警报显示“FAILED”(失败)
  3. 在输入中输入任何文本,然后立即点击“验证” - 错误消息消失,但不显示任何警报。
  4. 再次点击“VALIDATE” - 现在才可以看到带有“SUCCEED”文本的警报。

如何解决此问题,以便“验证”按钮在第一次点击后就能正常工作?

谢谢, 伊霍尔

最佳答案

3)你从来没有点击过按钮:D

发生的情况是,当您从字段中失去焦点时,它会验证该字段并删除文本,从而使按钮更改位置,并且您的单击错过了按钮

http://jsfiddle.net/s2bbd/

这个就像你怀疑的那样工作 http://jsfiddle.net/s2bbd/1/

Stackoverflow wont let me post this without code

关于knockout.js - knockout 验证首次阻止点击处理程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13647017/

相关文章:

internet-explorer - 使用 Knockout 绑定(bind)处理 IE 9 和 10 的清除按钮

javascript - knockout validation 不显示选择多个的错误消息

javascript - 使用动态可观察对象进行 KnockoutJS 验证

javascript - knockout : How to Change Data for Same Model depending on Some condition

mapping - Knockout Mapping - 在 JSON 加载后重新绑定(bind)数据

javascript - 使用 knockout 选项时如何更新对象实例的属性而不是原始列表?

javascript - 重新加载时订阅函数被多次调用

css - knockout validation 错误消息跨度

knockout.js - ko.validation with validatedObservable 给我奇怪的结果

javascript - Knockout JS 中的 validateObservable - undefined 不是函数