我有一个剃刀局部视图(ASP.NET MVC),我有一组预验证,用于设置许多复选框的状态。
虽然正常的功能是可以的,但我真的想只捕获对一个特定复选框(而不是整个复选框)的点击,并执行一个´$.post(...)‘调用。
我如何才能做到这一点?这有可能吗?
这是我的局部视图的一部分:
<div class="ukejuni">
@{
DateTime thisWeek = (DateTime)ViewData["thisWeek"];
int thisWeekNumber = DateTimeExtender.WeekOfYearIso8601(thisWeek);
int year = thisWeek.Year;
string chkValue = thisWeekNumber + ";" + year;
}
Uke @Html.Raw(thisWeekNumber.ToString())
@{
switch ((DeliveryWeekType)Model.ba.delivery_week_type)
{
case DeliveryWeekType.EvenWeek:
if (BusinessWeek.IsEvenWeek(thisWeekNumber)
&& (Model.ba.deviations.Where(deviation =>
deviation.agreement_id == Model.ba.agreement_id
&& deviation.week_nr == thisWeekNumber
&& deviation.year == year
&& deviation.delivery.HasValue
&& (bool)deviation.delivery == true)
.FirstOrDefault() == null)
)
{
<input class="leveringicon" type="checkbox" name="chkDelivery" checked="checked" value="@chkValue" />
}
else
{
<input class="leveringicon" type="checkbox" name="chkDelivery" value="@chkValue" />
}
break;
case DeliveryWeekType.OddWeek:
if (!BusinessWeek.IsEvenWeek(thisWeekNumber)
&& (Model.ba.deviations.Where(deviation =>
deviation.agreement_id == Model.ba.agreement_id
&& deviation.week_nr == thisWeekNumber
&& deviation.year == year
&& deviation.delivery.HasValue
&& (bool)deviation.delivery == true)
.FirstOrDefault() == null)
)
{
<input class="leveringicon" type="checkbox" name="chkDelivery" checked="checked" value="@chkValue" />
}
else
{
<input class="leveringicon" type="checkbox" name="chkDelivery" value="@chkValue" />
}
break;
default:
if (Model.ba.deviations.Where(deviation =>
deviation.agreement_id == Model.ba.agreement_id
&& deviation.week_nr == thisWeekNumber
&& deviation.year == year
&& deviation.delivery.HasValue
&& (bool)deviation.delivery == true)
.FirstOrDefault() == null)
{
<input class="leveringicon" type="checkbox" name="chkDelivery" checked="checked" value="@chkValue" />
}
else
{
<input class="leveringicon" type="checkbox" name="chkDelivery" value="@chkValue" />
}
break;
}
}
</div>这是我用来捕获(并写入控制台)复选框的值的脚本:
$(document).ready(function () {
$("input[name='chkDelivery']").change(function (e) {
var values = $(this).val().split(';');
console.log(values);
if ($(this).is(':checked'))
{
@*$.post('@Html.Action("ChangeWeekDelivery")', {week: values[0], year: values[1], checkedState: true }, function () {
});*@
}
});
});在控制台输出中,我将得到8个具有相同输出的条目(8是屏幕上复选框的数量):
["51", "2015"]
["51", "2015"]
["51", "2015"]
["51", "2015"]
["51", "2015"]
["51", "2015"]
["51", "2015"]
["51", "2015"]那么,如何将捕获事件限制为单个项目呢?我尝试使用“$(e.target)”,但结果仍然是一样的。
诚挚的问候
发布于 2015-11-30 23:12:36
解决了。
问题是我把javascript代码放在局部视图中。一旦我把JS放在主视图上,一切都很完美。
https://stackoverflow.com/questions/33998705
复制相似问题