在淘汰赛中取消选中复选框

时间:2013-10-19 04:33:12

标签: javascript knockout.js

html

<input id="checkbox" name="claimcheckbox" type="checkbox" data-bind="checked: IsclaimcheckboxSubscribe,visible: Authorization.IsclaimcheckboxAuthorized" />

Java脚本

IsclaimcheckboxSubscribe = ko.observable();
IsclaimcheckboxSubscribe.subscribe(function (newvalue) {
    claimcheckboxSelection(newvalue);
});

function claimcheckboxSelection(newvalue) {
    if (newvalue) {
        if (claimcheckboxConfirmation()) {
            //Do something

        } else {
            do other thing

        }

    } else {}


    function claimcheckboxConfirmation() {
        var claimcheckboxvalue = confirm("Do you want to process?");
        //if yes
        if (claimcheckboxvalue) {
            return true;
        } else {
            //if no
            return false;

        }
    }

现在问题在于消息确认

  

您想要处理吗?

有YES和NO按钮,当我点击YES然后我想取消选中该复选框。我试过了 IsclaimcheckboxSubscribe(假); 但它不起作用。

请注意,我没有使用jquery。所以我想通过使用敲除js来选中复选框。 请有人帮忙!

1 个答案:

答案 0 :(得分:2)

这里似乎有几个问题。

  1. 没有模型设置
  2. 没有调用applybindings
  3. claimcheckboxSelection缺少}
  4. 我能够通过创建模型并在该模型上应用敲除绑定来实现它。

    var model = (function (){
        var self = {};
        self.IsclaimcheckboxSubscribe = ko.observable();    
        self.IsclaimcheckboxSubscribe.subscribe(function (newvalue) {
            claimcheckboxSelection(newvalue);
        });
        return self;
    })();
    ko.applyBindings(model);
    

    然后在claimcheckboxselection方法中,我可以使用model.IsclaimcheckboxSubscribe(false)

    按预期设置值
    function claimcheckboxSelection(newvalue) {
        if (newvalue) {
            if (claimcheckboxConfirmation()) {
                // Do Something
            } else {
                model.IsclaimcheckboxSubscribe(false);
            }
    
        } else {}
    }
    

    工作jsfiddle:http://jsfiddle.net/infiniteloops/JfXQv/