【问题标题】:Check all checkboxes before submit提交前选中所有复选框
【发布时间】:2016-05-23 15:43:34
【问题描述】:

好吧,我有一个表单,用户可以在其中选择一个带有复选框的项目,用户输入他想要发送多少个项目并输入文本,但是有些项目需要一个复选框保存的序列号。

这是我的方法:

<script>
      function checkall()
      {
        var ok=true;
        $('input:checkbox[id^="art"]:checked').each(function() {
          var vals = $(this).val();
          //first attempt
          if (typeof document.getElementById(vals+"existencia") === 'undefined') {
            ok=false;
            return false;
            alert("Error message");
          }else
          if (typeof document.getElementById(vals+"-serie")==='undefined') {
            ok=false
            return false;
            alert("Error message 2");
          }

//second attempt
          if (obj.hasOwnProperty(vals+'existencia')) {
            art = document.getElementById(vals+"existencia").value;
            alert(art);
          }else if (obj.hasOwnProperty(vals+'serial')) {
            sert=document.getElementById(vals+"-serie").value;
            alert(sert);
          }
        });


        if(ok)
        {
          document.getElementById("myform").submit();
        }
      }
      </script>

该脚本旨在循环所有选中的复选框,如果输入为空,则停止并提醒用户,另一个阶段是当他检查具有序列号的文章时,至少必须选中 1 个并提醒客户

我尝试的第一次尝试通过了,因为这些元素已定义,第二次尝试抛出obj is not defined,也许我误解了我搜索的代码和答案,有人可以帮助实现我的目标或解释我做错了什么,谢谢。

更新:

if ($inicio == 0) {
                    echo "<tr bgcolor= '#f4f4f4' >";
                    $inicio = 1;
                  } else {
                    echo "<tr bgcolor= white>";
                    $inicio = 0;
                  }
                  ?>
                  <td style="width: 10%;text-align: center;">
                    <input type="checkbox" name="art[]" id="art" value="<?php echo $articulo; ?>" /></td>
                    <td width="12%" align="center"><?php echo $diferencia_dias ?> d&iacute;as</td>
                    <td width="8%" style="text-align: center;"><?php echo $articulo; ?></td>

                    <td width="45%"><?php echo $descripcion; ?></td>
                    <?php
                    if($numserie>0){
                      $esto = trim($articulo);
                      $bus_serie = mssql_query("execute serial_madness '$esto','$almacen'");
                      echo "<td style='width:10%;text-align:left;'>";
                      while($res_serie = mssql_fetch_array($bus_serie))
                      {
                        echo '<input type="checkbox" id="'.$articulo.'-serie" name="'.$articulo.'-Serie[]" value="'.$res_serie["ARTICULO"].','.$res_serie["NUMSERIE"].'_'.$valor.'  "> '.$res_serie["NUMSERIE"].' <br>';
                      }
                      echo "</td>";
                    }else{
                      ?><td style="width:10%;text-align:center;"><input type="number" style="text-align:center;width:30px; height:30px;" id="<?php echo $articulo_c; ?>existencia" name="<?php echo
                      $articulo_c; ?>existencia" value="<?php echo (int)$existencias; ?>" min="1" max="<?php echo (int)$existencias; ?>"/></td>
                      <?php
                    } ?>

【问题讨论】:

  • 很明显,没有标记就无法测试这段代码。你介意分享一下吗?
  • 更新了,是你的意思吗?
  • 我很确定这个问题与php.. 无关。请分享浏览器渲染/解析的 html..

标签: javascript jquery checkbox


【解决方案1】:

所以,为了检查一个复选框,您可以使用 jquery。

例如:$("#checkboxId").prop('checked', true);

上面的例子将选中id为“checkboxId”的复选框,将true更改为false将取消选中该复选框;

如果要检查检查了多少或哪些输入,可以使用 jquery 选择器返回的数组的 .length。

下面会检查所有id以“test”开头的复选框是否被选中:

if($('[id^="test"]:checkbox').length == $('[id^="test"]:checkbox:checked').length) 
{
   // Do stuff here
}

同样,如果长度为零,您可以检查是否未检查任何内容。

我准备了一个简单的示例,我认为它可以解决您在此处解决的一般问题。

https://plnkr.co/edit/2v6x1DXRpAiaKiBFSMz6?p=preview

请注意,当您在我的 plunker 示例中单击“提交”时,所有复选框都会自动被选中。

如果您单击“验证”按钮,它将验证是否确实选中了所有复选框。

您应该能够使用我的示例为您的特定案例创建解决方案。

您可能还想使用.is() jquery 函数 例子: $('#' + id).is(":checked")

一些类似的解决方案和解释见下面的答案:Check if checkbox is checked with jQuery

【讨论】:

  • 这有助于我进行序列号验证,但我认为你给了正确的轨道,谢谢!
  • 还有什么你还不知道怎么办?我可以尝试将其添加到我的答案中
  • 好吧,在我的帖子中,我写了关于验证是否选中了项目复选框然后它需要验证,如果它有输入文本(没有序列号),所以它检查输入,如果项目 checkbos 有序列号验证至少 1 个序列号复选框被选中
  • 那是特定于实现的,我可以尝试添加它,但我认为你有足够的能力使用带有 jquery 选择器的 if 语句,因为你有一种方法来检测什么是检查和不检查.
  • 你是对的,这就是为什么我写你给我一个正确的轨道;)
猜你喜欢
  • 1970-01-01
  • 2017-09-19
  • 2015-03-13
  • 1970-01-01
  • 1970-01-01
  • 2013-01-27
  • 1970-01-01
  • 2014-05-12
  • 1970-01-01
相关资源
最近更新 更多