MVC 3复选框始终返回true,即使未选中

2021/01/29 15:11 · jquery ·  · 0评论

我有以下代码

@foreach (var item in Model.Defaults)
    {
        <tr class="CertainCategory">
            <td>
                @item.Item1
            </td>
            <td>
                @Html.CheckBoxFor(c => c.Use)
                @Html.Hidden("guid", guid.guid.ToString())
            </td>
        </tr>
    }

我正在尝试使用AJAX将表单值提交给控制器方法。我的问题是,复选框的值始终以形式发送true

$('.CropUsageItem').each(function () {

            var guid = $(this).find("#guid").val();
            var chk = $(this).find("#use").val();
            var data = {
                guid: guid,
                chk: chk
            };

            $.ajax({
                async: false,
                type: "POST",
                url: "DefaultValues/SaveDefault",
                data: data
            });
        });

我用类似的结果搜索了StackOverflow,但没有一个完全适用于我的情况。如何发送正确的值?

如果选中了复选框,则可以使用以下验证。

var chk = $('#use').attr('checked');

要么

var chk = $('#use').is(':checked'); 

.val()返回value属性的内容。因为它可能是非null的,所以等于true。

同时检查您的外壳。JavaScript,css和jQuery也区分大小写。

就像Simon所说的那样,.val()返回复选框的value属性,它可以是您想要的任何值。但更具体地说,它返回DOM对象的value属性,该属性由该属性初始化。MVC似乎默认将值设置为“ true”,这对我来说似乎毫无意义。但是在某些情况下,您可能希望将此线程设置为选中选项的ID或其他有意义的值

尼古拉斯(Nicholas)提供了一种获取上面是否选中该复选框的好方法。选中并取消选中此jsfiddle上的复选框,以获取各种方法及其结果的示例:

jQuery复选框已选中


小提琴摘要:

$("#use").val();  //Returns the value. Not related to checked state.
$("#use").attr("checked")  //Returns the checked attribute value. Does not change with checked state.
$("#use").prop("checked")  //Returns boolean checked state.
$("#use")[0].checked)  //Returns boolean checked state.
$("#use").is(":checked")  //Returns boolean checked state.

请注意,.val和.attr的结果不变。这是因为val属性不依赖于选中状态,并且当复选框更改时,标记中的实际选中属性不会更新。幕后只有DOM对象的属性,这是后三种方法访问的属性。


有关更多信息,请参见.prop上的jQuery API文档

var chk = $('#use').checked;

为我工作

本文地址:http://jquery.askforanswer.com/mvc-3fuxuankuangshizhongfanhuitruejishiweixuanzhong.html
文章标签: ,   ,   ,  
版权声明:本文为原创文章,版权归 admin 所有,欢迎分享本文,转载请保留出处!

文件下载

老薛主机终身7折优惠码boke112

上一篇:
下一篇:

评论已关闭!