【问题标题】:Trying to set default checkbox value if not checked如果未选中,则尝试设置默认复选框值
【发布时间】:2019-07-21 18:53:11
【问题描述】:

基本上我可以得到在勾选框(= 1)时适用的值,但我无法让它在未选中时发送默认值 0。

<input type="checkbox" name="post_friend" value="1">

我四处搜索,有人建议设置一个隐藏的复选框,但它对我不起作用。

<input type="hidden" name="post_friend" value="0">

【问题讨论】:

  • 你把隐藏的输入放在复选框之前了吗?
  • 不发送未选中的复选框
  • 你为什么把它标记为 PHP/mySQL?
  • 是的,我将隐藏字段放在未隐藏值之前,它被标记为 mysql/php,因为我正在插入 mysql 数据库(值 1)并且不确定是否有 PHP 技巧来获得这个工作。

标签: php mysql checkbox


【解决方案1】:

你能不能不做这样的事?

$checkbox = isset($_POST['post_friend']) ? $_POST['post_friend'] : 0 ;

所以如果复选框被选中,变量为 1。如果没有,变量赋值为 0

【讨论】:

  • 问题在于,您可能不知道未选中字段的名称。我有一个类似的问题,根据用户数据,复选框的 id 可能会有所不同。我可以知道提交后检查了哪些复选框(它们的 ID),但我无法(直接)知道还有哪些其他复选框未选中,因此我无法在 DB 上更新它们。
【解决方案2】:

OP 给出的原始方法应该可以工作,但是,值很可能会有所不同。

例如,

<input type="checkbox" name="post_friend" value="1">
<input type="hidden" name="post_friend" value="0">

在这种情况下["post_friend"] = 0

但是,在这个例子中:

<input type="checkbox" checked="checked" name="post_friend" value="1">
<input type="hidden" name="post_friend" value="0">

大多数浏览器都会发送["post_friend"] = "1,0"。 同一属性的多个值通常会在 http 请求中连接起来。

为此,您可以使用 String.Contains 找到 1。

但是,在这里,您应该真正评估您的输入是否应该是复选框,或者更合适的是单选输入。

【讨论】:

    【解决方案3】:

    试试下面的方法

    <div class="col-xs-5 drinkingLeft">
    <input type="checkbox" name="beer" id="beer"class="require-one col-xs-1" value="0"/>
    <input id='beerHidden'  type='hidden' value='0' name='beer'>   
    <label for="beer" class="col-xs-10">Beer </label>
    </div>
    
    
     $('#beer').on('change', function () {
    this.value = this.checked ? 1 : 0;
     }).change();
    
    $("#submit").click(function () {
    if(document.getElementById("beer").checked){
    document.getElementById('beerHidden').disabled = true;
    }
    });
    

    【讨论】:

      【解决方案4】:

      HTML

       <input type="checkbox" id="chkbox1">
      

      jQuery

      if( $("#chkbox1").is(':checked')){
                  value = "True";
              }else{
                  value= "False";
              }
      

      【讨论】:

        【解决方案5】:

        唯一可能的解决方案是:

        <?php
            // if data is posted, set value to 1, else to 0
            $check_0 = isset($_POST['check'][0]) ? 1 : 0;
            $check_1 = isset($_POST['check'][1]) ? 1 : 0;
        ?>
        

        如果你想检查同一页面上的信息,那么使用 JS 并检查 NULL 值...

        【讨论】:

          猜你喜欢
          • 2017-08-18
          • 2016-06-22
          • 2019-08-19
          • 1970-01-01
          • 2016-09-19
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2015-11-17
          相关资源
          最近更新 更多