从jquery中查找分配给复选框的数字值

时间:2014-06-06 09:27:39

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

我有一个ASP.NET MVC剃刀页面,它有一个循环并且在循环中有一个CheckboxFor。我正在为每个复选框分配一个数字值。我还分配了一个类,以便当这些复选框值中的任何一个发生更改时,我可以在jquery中捕获onchange事件:

@Html.CheckBoxFor(modelItem => item.PrincipleInvestigator, new { Value = item.ProjectResearcherId, @class = "Principle-investigator-checkbox" })

然后,在jquery中,我想要点击的特定复选框的数字值:

$(".Principle-investigator-checkbox").change(function () {
    alert($(".Principle-investigator-checkbox").val);
});

这不起作用。我实际上并不知道如何识别单击列表中的哪个复选框。像this.val这样的东西?另外,我不确定.val是否给了我分配它的数字值,但如果我检查渲染的HTML,则可以看到值:

<input value="4570" class="Principle-investigator-checkbox" data-val="true" data-val-required="The PrincipleInvestigator field is required." id="item_PrincipleInvestigator" name="item.PrincipleInvestigator" type="checkbox">

3 个答案:

答案 0 :(得分:2)

$(".Principle-investigator-checkbox").change(function () {
    alert(this.value);
    //or  alert($(this).val());
    //avoid alert($(".Principle-investigator-checkbox").val());
});

<强> THIS.VALUE

这里,this引用本机DOM元素,因此我们可以引用本机DOM属性value来获取值

<强> $(本).VAL()

这里我们用jQuery对象包装本机DOM元素。因此,我们需要使用jQuery包装器对象上的方法来获取值。那是 val()方法

避免提醒($(&#34; .Principle-investigator-checkbox&#34;)。val())

val()是一个getter方法,它将始终返回第一个匹配的元素而不是所有元素。在处理多元素选择器时,最好在更改函数中使用this

答案 1 :(得分:1)

$(".Principle-investigator-checkbox")将选择此类的所有复选框,因为有多个checbkx,您必须编写$(this)以使用单击的一个引用获取当前clikced一个值,如下所示:

$(".Principle-investigator-checkbox").change(function () {
    alert($(this).val()); //gets value of current checkbox which caused event
});

同样val不是val()

的函数

答案 2 :(得分:1)

val是一种方法而非属性 使用val()代替val

$(".Principle-investigator-checkbox").change(function () {
    alert($(this).val());
});

在事件处理程序中也使用$(this)。另外,它将使用类.Principle-investigator-checkbox的第一个元素的值。