【问题标题】:javascript how to see the razor variable? and set checkbox?javascript如何查看剃刀变量?并设置复选框?
【发布时间】:2015-06-19 14:42:14
【问题描述】:

有一个带有复选框的编辑表单。如果选中该复选框,它会使用脚本将是/否值发送到 hiddenfor( 变量。

<div class="form-group">
@Html.LabelFor(model => model.PTModel1, htmlAttributes: new { @class =      "control-label col-md-2" })
<div class="col-md-10">
    <div class="checkbox">
        @Html.CheckBox("checkbox")
        @Html.HiddenFor(model => model.PTModel1, new { htmlAttributes = new { @class = "form-control" } })
    </div>
</div>

脚本代码:

$("#checkbox1").on("click", function () {
                var myCheckbox1 = $("#checkbox1");
                if (myCheckbox1.is(":checked")) {
                    $("#PTModel1").val("Yes");
                }
                else {
                    $("#PTModel1").val("No");
                }
            });

在 mvc 引导表单中的 Create 和 Edit 方法上确定,它与一些脚本一起添加是/否可以正常工作;但是在进行编辑时会出现问题,如果该值已选中并且已设置为是,则它始终默认为否,并且未选中该复选框。如果现在以 PTModel1 变量形式出现的值是“是”,如何检查复选框??

 <script>
   $(window).load(function () {

       switch (("#PTModel1").val) {

           case "Yes": $("#checkbox1").checked;
               alert("in switch case");
               break;
           default: alert("in switch case default" + "#PTModel1");
    }
});
</script>

问题:如果变量的值为“是”,如何设置复选框?语法没有达到我的预期。

第二个问题:有一次我保存了一个选中复选框的小图标图像,因此在索引视图中它会显示该图标。任何使它保存并显示状态的东西。复选框必须反映复选框的选中状态

【问题讨论】:

    标签: javascript jquery asp.net-mvc razor checkbox


    【解决方案1】:

    查看以下代码中突出显示的错误:

    $(window).load(function () {
    
        switch ($("#PTModel1").val()) {
            //  ^                 ^^
    
            case "Yes":
                $("#checkbox1").prop('checked', true);
                //              ^^^^^^^^^^^^^^^^^^^^^
                alert("in switch case");
                break;
            default:
                alert("in switch case default" + "#PTModel1");
        }
    });
    

    短版:

    $(window).load(function () {
        $('#checkbox1').prop('checked', $('#PTModel1').val() == 'Yes');
    });
    

    事件处理程序的短版本

    $("#checkbox1").on("click", function () {
        $('#PTModel1').val($(this).is(':checked') ? 'Yes' : 'No');
    });
    

    【讨论】:

    • 非常感谢!我对 js 如何在没有明确声明的情况下推断 if 感到惊讶,这是 js 语句的本质吗?暗示如果?它工作得很好。
    • @MaxPower 那是ternary Operator。阅读developer.mozilla.org/en/docs/Web/JavaScript/Reference/…
    • 再次感谢您的参考,非常有帮助。但是在加载功能上,没有 if 和 no ? click 函数的三元来自 C 类型语法;但是第一个就在那里,隐含的 1/2 三元?即:语句,结果为真;
    • 好的,出了点问题。 Firefox 不支持此代码,使用 chrome 它大部分时间都可以工作,很难查明。有时它会拯救国家,有时不会。如果我添加一个警报('复选框已选中'),它似乎每次都有效。把它拿出来,它的可能性较小。所以这暗示了一些时间问题。有没有办法让这个脚本更具确定性?是否有锁定命令然后读取/修改/写入然后解锁?有没有办法让 html/script 代码运行更可靠?
    猜你喜欢
    • 1970-01-01
    • 2018-02-19
    • 1970-01-01
    • 2020-12-04
    • 2017-07-30
    • 1970-01-01
    • 2012-04-02
    • 1970-01-01
    • 2015-04-03
    相关资源
    最近更新 更多