我有以下代码
@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上的复选框,以获取各种方法及其结果的示例:
小提琴摘要:
$("#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
文章标签:asp.net-mvc , asp.net-mvc-3 , checkbox , jquery
版权声明:本文为原创文章,版权归 admin 所有,欢迎分享本文,转载请保留出处!
文章标签:asp.net-mvc , asp.net-mvc-3 , checkbox , jquery
版权声明:本文为原创文章,版权归 admin 所有,欢迎分享本文,转载请保留出处!
评论已关闭!