javascript 如何在点击另一个元素时取消选中模态弹出窗口中的复选框(由模型填充)?

0kjbasz6  于 2023-10-14  发布在  Java
关注(0)|答案(1)|浏览(92)

我正在使用.net MVC,并有一个模态弹出窗口,用于将数据输入到一个calllog(fullbackar.js)。填充下拉列表(用于可预订办公桌等)的模型还根据用户自动勾选某些复选框。如果使用了“预订对象”选项卡,我希望勾选框取消勾选。我已经尝试了所有我能想到的JavaScript和JQuery(attr,prop和瓦尔)。值/属性确实发生了变化,但复选框本身保持勾选。
模态的代码(有些可能会丢失,因为我已经删除了不相关的部分):

  1. <div class="modal-content">
  2. <div class="modal-header">
  3. <button type="button" class="close" data-dismiss="modal">&times;</button>
  4. <h4 class="modal-title">Create Booking</h4>
  5. </div>
  6. <div class="modal-body">
  7. <p>Booking Details.</p>
  8. @using (Html.BeginForm("CreateEvent", "Calendar", FormMethod.Post, new { id = "Create" }))
  9. {
  10. <div class="form-group">
  11. @Html.LabelFor(model => model.BookedFor, htmlAttributes: new { @class = "control-label col-md-2" })
  12. <div class="col-md-10">
  13. @Html.DropDownListFor(model => model.BookedFor, Model.BookedForList.Select(x => new SelectListItem { Text = x.FullName, Value = x.FullName }), new { @class = "form-control chosen-select", @id = "BookList" })
  14. </div>
  15. </div>
  16. <div class="form-group">
  17. @Html.LabelFor(model => model.FirstAider, htmlAttributes: new { @class = "control-label col-md-2" })
  18. <div class="col-md-10">
  19. @Html.EditorFor(model => model.FirstAider, new { @class = "form-control", @id = "Aid" })
  20. </div>
  21. </div>
  22. </div>
  23. </div>
  24. @Html.HiddenFor(c => c.ID)*@
  25. @Html.TextBoxFor(model => model.ID, new { @class = "form-control", @style = "display: none;", @id = "CID", @readonly = "readonly" })
  26. @Html.AntiForgeryToken()
  27. }
  28. </div>
  29. <br />
  30. <br />
  31. <div class="modal-footer">
  32. <button type="button" class="btn btn-default" data-dismiss="modal">Close</button>
  33. <button type="submit" id="CreateSubmit" class="btn btn-primary">Save</button>
  34. </div>

Aid的值是从模型中设置的,是一个布尔值。

如果勾选了复选框(因此value为true),我希望当用户更改“Booked For”选项卡中的值时,不选中该复选框。
我已经运行了这个jQuery/JavaScript,我认为它应该改变值-它确实改变了属性的值,但复选框仍然选中。

  1. $('#BookList').change(function () {
  2. var at = $("#Aid").attr("checked");
  3. var prop = $("#Aid").prop("checked");
  4. alert("attr: " + at + ", prop: " + prop);
  5. $("#Aid").prop("checked", false).change()
  6. $("#Aid").removeAttr("checked");
  7. var atb = $("#Aid").attr("checked");
  8. var propb = $("#Aid").prop("checked");
  9. alert("attr: " + atb + ", prop: " + propb);
  10. });

当模型选中该复选框时,第一个警报显示:

  • attr:checked,prop:真 *

第二个警报显示:

  • attr:undefined,prop:不正确 *

如果模型未勾选该复选框,则两个警报均显示:

  • attr:undefined,prop:不正确 *

因此,值会更改以匹配未选中的框,但框本身保持选中状态。我缺少什么命令/属性?

gudnpqoy

gudnpqoy1#

我已经解决了(某种程度上)。问题似乎是jQuery不喜欢与Razor使用EditorFor创建的复选框对话-如果我将其更改为CheckBoxFor,我现在可以更新复选框!
由于某种原因,复选框的大小增加了三倍,但这是另一个问题。

相关问题