【问题标题】:Change the value of checkbox when checked选中时更改复选框的值
【发布时间】:2017-03-08 19:44:40
【问题描述】:

当复选框被选中时,是否可以将复选框的值从 TRUE 更改为 FALSE,反之亦然?我可以在更改事件上编写一个 JQuery 并更改值,但想知道 HTML 中是否有其他方法?

<input name="bool_flg" id="bNow_flg" type="checkbox" value="true">

【问题讨论】:

  • 复选框是表单的一部分,并且您想影响提交表单时使用的值吗?
  • 你想在这里做什么。您的复选框的值为true,因此它将绑定到bool 属性。如果选中,则将提交true,如果未选中,则不提交任何内容(因为未选中的复选框不会提交值)并且您的bool 属性将为false。更改value.attribute 有什么意义。你为什么不使用@Html.CheckBoxFor(m =&gt; m.bool_flg) 来正确生成你的html?

标签: jquery html .net asp.net-mvc


【解决方案1】:

你到底想做什么?复选框的checked 属性将始终对应输入是否为checked

我有一个小提琴 here 来演示这个。

如果您希望复选框的value 属性与其checked 状态保持同步,请参阅this fiddle。

基本上,您希望将更改事件注册到复选框并使其值等于其选中状态。

$('#bNow_flg').change(function() {
    $(this).val($(this).is(':checked'));
});

【讨论】:

  • 我想要改变值。当它被检查时
  • 如果你看一下我的小提琴,你会发现checked确实在检查时发生了变化。如果您希望 value 更改,则必须在 javascript 中手动指定,因为 value 属性是免费属性
  • 我想知道,如果没有像 HTML 那样的 jquery 是否可能,如果这是一个愚蠢的问题,我很抱歉。我已经以与小提琴中所示相同的方式使用它。
  • 很遗憾没有。 value 属性的目的不是确定其检查状态。有关更多信息,请参阅MDN
  • 好吧,有道理。谢谢
【解决方案2】:

我不确定你想要什么,但默认情况下,当复选框被选中时,你得到一个真值,然后如果未选中复选框,则值为假。

所以你不需要在这种输入上指定属性值。

【讨论】:

    【解决方案3】:

    复选框是表单的一部分,并且您想影响提交表单时使用的值吗?在这种情况下,您必须使用两个具有相同名称的输入,如下所示:

    <input name="bool_flg" type="hidden" value="false" />
    <input name="bool_flg" id="bNow_flg" type="checkbox" value="true" />
    

    背景是浏览器不会发送表单提交时未选中的复选框的值。当复选框未选中时,浏览器将只发送隐藏输入的false 值。 当复选框被选中时,浏览器将发送复选框的true 值覆盖隐藏输入的false 值。

    当您使用 Html.CheckBoxFor() 时,Asp.net MVC 使用相同的技巧(使用隐藏输入和同名复选框)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-03-01
      • 1970-01-01
      • 1970-01-01
      • 2019-03-04
      • 2019-10-30
      • 1970-01-01
      • 1970-01-01
      • 2020-09-21
      相关资源
      最近更新 更多