【问题标题】:Send value even for unchecked checkboxes [closed]即使为未选中的复选框发送值[关闭]
【发布时间】:2014-06-30 21:22:21
【问题描述】:

我有一个带有 4 个复选框的表单,如下所示:

  <td>
    <input type="hidden" name = "all_post" value="0" checked>
    <input type="checkbox" name = "all_post" id = "all_post" value="1"> All Posts <br/>
    <input type="hidden" name = "others_post" value="0" checked> 
    <input type="checkbox" name = "others_post" id = "others_post" value="1"> Other's Posts <br/>
    <input type="hidden" name = "clients_post" value="0" checked>
    <input type="checkbox" name = "clients_post" id = "clients_post" value="1"> Cilent's Post <br/>
    <input type="hidden" name = "assigned_post" value="0" checked>
    <input type="checkbox" name = "assigned_post" id = "assigned_post" value="1"> Task Assigned 
  </td>

如果选中复选框,我希望它返回“1”,但如果未选中,我希望它返回“0”,因此我有一个隐藏的同名复选框。我的服务器处理复选框,因为它将发送隐藏和未隐藏的复选框值(“0”,“1”),我只想接收一个值。默认情况下检查所有隐藏的复选框以发送“0”,但我想这样做,以便如果选中未隐藏的复选框,则隐藏的复选框将变为未选中,因此仅发送 1 个值。我将如何处理?

TL:DR 如果未选中一个选项,我想发送一个值“0”,如果选中一个选项,我想发送一个“1”

【问题讨论】:

    标签: jquery html checkbox


    【解决方案1】:

    如果我正确理解了您的问题,下面的代码可能会对您有所帮助。但是我不明白为什么您不仅要尝试使用复选框和带有选中属性的隐藏输入,而且还相反。

    像这样更改 HTML,因为您不需要隐藏输入,因为您将使用名称验证数据,如果您想要的只是 1 或 0,下面的代码可能会对您有所帮助。

    更新小提琴:http://jsfiddle.net/eaVL3/2/

    HTML:

    <input type="checkbox" name = "all_post" id = "all_post" value="0"> All Posts <br/>
    <input type="checkbox" name = "others_post" id = "others_post" value="0"> Other's Posts <br/>
    <input type="checkbox" name = "clients_post" id = "clients_post" value="0"> Cilent's Post <br/>
    <input type="checkbox" name = "assigned_post" id = "assigned_post" value="0"> Task Assigned 
    

    Javascript:

    $(function(){
        $(':checkbox').on('change', function() {
            if (this.checked == true)
                $(this).val("1"); 
            else
                $(this).val("0");
        });
    }); 
    

    【讨论】:

    • 这是我正在寻找的,但它不能 100% 工作。当我取消隐藏隐藏的复选框以测试它们时,一切正常。但是我把它们隐藏了,它们的值都被发送,隐藏和未隐藏
    • 我不确定我是否再次理解了你想要什么,但我已经编辑了我的答案和小提琴。在此之后,也许您可​​以验证发送的数据,其中一个是 1 或 0,因为我在选中复选框时更新了它们,它的值变为 0,如果未选中,它的值变为 1。
    • 您的代码是有道理的,但我不知道为什么,但它不断发送两个值。也许它是 Perl 的东西?
    • 但基本上,当复选框被选中时,它返回“1”,当它不是时,不会发送任何值,但我希望在未选中选项时发送值“0”。也许还有另一种方法可以解决这个问题?
    • 我想我得到了你想要的,你可以删除隐藏的输入。我会尽快更新我的答案。
    【解决方案2】:

    你需要use a radio button

    以男性/女性为例。听起来您希望它返回男性或女性,而不是“0-男性,1-女性”。因此,使用单选按钮,

    <form>
    <input type="radio" name="sex" value="male">Male<br>
    <input type="radio" name="sex" value="female">Female
    </form>
    

    这将使用户只能选择一个值,然后返回一个值。复选框不适合您的用途。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-07-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-06-14
      • 2019-08-29
      相关资源
      最近更新 更多