使用 spring 表单时如何获取 ajax/jquery 中的复选框值

how do i get the checkbox value in ajax/jquery when using spring form

我有一组由路径 deliveryStatus 定义的复选框,如下所示

<form:checkbox path="deliveryStatus" value="notDelivered"/>
<form:checkbox path="deliveryStatus" value="delivered"/>

我读了两个非常好的例子

Example #1

我注意到 ID 是 deliveryStatus1 和 deliveryStatus2 而不是 deliveryStatus,因此示例 #1 中提到的方法对我不直接起作用。此外,当使用示例 #2 中提到的解决方案时(考虑父标签 ID 为 deliveryStatus),我没有得到任何结果。

$('#deliveryStatus').is(":checked");

returns 错误和

$('#deliveryStatus').val();

给我未定义

在 jquery/ajax 中为我的表单(deliveryStatus)获取 selected/checked 复选框的正确方法是什么。

在我意识到 ID 为 deliveryStatus1 和 deliveryStatus2 后,我注意到下面的代码有效

var deliverystatus =  $('#deliveryStatus1').val();
alert( 'deliverystatus' );
deliverystatus = $('#deliveryStatus1').is(":checked");
alert( deliverystatus );
deliverystatus = $('#deliveryStatus2').is(":checked");
alert( deliverystatus );

但不认为这是获得选中选项的正确方法。 原因是有多个复选框。

阅读示例 #1 我正在考虑应该有更好的方法来读取具有相同路径值的多个复选框


问题更新

像下面这样显式添加 ID

<form:checkbox path="deliveryStatus" id="deliveryStatus" value="notDelivered"/>
<form:checkbox path="deliveryStatus" id="deliveryStatus" value="delivered"/>

允许我通过

获得价值
$('#deliveryStatus:checked').val();

只有选择一个才有效。因此当有多项选择时可能不是很正确

当您有多个具有相同路径变量的复选框时,它们将以相同的名称呈现,如下所示。

<form:checkbox path="deliveryStatus" value="notDelivered"/>
<form:checkbox path="deliveryStatus" value="delivered"/>

将呈现为

<input id="deliveryStatus1" name="deliveryStatus" type="checkbox" value="notDelivered"/>
<input id="deliveryStatus2" name="deliveryStatus" type="checkbox" value="delivered"/>

您可以使用以下方法获取选中的复选框的值。

$("input[name='deliveryStatus']:checked").each(function (){
    alert($(this).val());
});

如果只想获取所有checked的值,不管有没有checked,使用下面的。

$("input[name='deliveryStatus']").each(function (){
    alert($(this).val());
});

希望这对您有所帮助。