1

我正在尝试使用以下代码切换复选框的值:

<div class="control-group">
        <label class="control-label checkbox" for="IsViewAsWebpage">
            {{#if this.IsViewAsWebpage}}
                <input type="hidden" id="IsViewAsWebpage" name="IsViewAsWebpage" value="true"/> 
                <input type="checkbox" class="enable-checkbox" checked /> 
            {{else}}
                <input type="hidden" id="IsViewAsWebpage" name="IsViewAsWebpage" value="false"/> 
                <input type="checkbox" class="enable-checkbox" /> 
            {{/if}}
            <span>View as Webpage</span>
        </label>
    </div>



'click .enable-checkbox': function (e) {
                if (e.currentTarget.parentElement.htmlFor == "IsViewAsWebpage") {
                     this.$('#IsViewAsWebpage').is(':checked');
            }

        }

我知道我在点击功能中遗漏了一些东西。我基本上想在用户单击它时切换复选框值。有人可以指出我正确的方向吗?谢谢你。

4

2 回答 2

1

如果您想在单击复选框时使用 handlebars.js 切换内容,则需要在每次对复选框进行修改时调用 handlebars 来替换您的内容

$(".enable-checkbox").change(function (e) {
    if($(this).parent().attr("for") == "IsViewAsWebpage") {
        var checked = $(this).is(":checked");
        IsViewAsWebpage = checked;
        $("#yourcontainer").html(Handlebars.compile(yourtemplatesource));
    }

}

那么你的 IsViewAsWebpage 变量应该是全局的,你的胡子条件应该是:

{{#if IsViewAsWebpage}}

但这很复杂……只需使用 Esthete 解决方案,它将为您节省大量时间。

于 2012-09-17T22:48:50.550 回答
1

当您的复选框被点击时,它将切换。这就是复选框的工作方式。

如果您希望在value切换复选框时更改隐藏的输入,我认为您想要的是:

$(".enable-checkbox").change(function (e) {
    if($(this).parent().attr("for") == "IsViewAsWebpage") {
        var checked = $(this).is(":checked"); // Returns true/false.
        $('#IsViewAsWebpage').attr("value", checked); // Sets true/false.
    }        
});
于 2012-09-17T22:35:02.407 回答