复选框具有相同名称的输入不会触发javascript

时间:2014-02-17 16:45:04

标签: javascript ajax asp.net-mvc input

我是网络开发世界的新手。 我有一个基于ASP的应用程序。 NET MVC。

使用Razor

生成了一个复选框列表
@foreach (var item in Model.Where(m => m.Visible))
{
<input id="selectedValues" name="selectedValues" type="checkbox" @(item.Selected ? "checked" : "") />
}

和触发Ajax操作的Javascript函数:

$('#selectedValues').change(function () {

var data = {};
data[$(this).attr('name')] = $(this).is(':checked');

$.ajax({
   url: '@Url.Action("action", "controller")',
   type: 'POST',
   data: data,
   success: function (result) {

   }
 });
});

在模型中,我有一些项目,复选框列表在html上构建正常。 问题是只有第一个复选框触发控制器上的操作。当我选择取消选择它时。

其他复选框会触发操作。

知道如何解决这个问题吗?非常感谢!

1 个答案:

答案 0 :(得分:0)

他们可能没有相同的ID而#是ID,而不是名称

$('input[name="selectedValues"]') 

会更好用

<input class="selectedValues" name="selectedValues"

使用

$(".selectedValues")

最后使用.on(“点击”而非更改,因为在某些浏览器中没有模糊不会触发更改