2016-05-23 134 views
0

嗯,我有一个表单,用户可以用复选框选择一个项目,用户输入他想用输入文本发送多少项目,但是有一些项目需要一个序列号一个复选框成立。提交前检查所有复选框

这是我的方法:

<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> 

脚本意在循环中的所有选中的复选框,如果输入的是空站,并提醒用户,另一个阶段是,当他检查序列号的一篇文章,至少有检查,并提醒客户

e1

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

UPDATE:

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 
        } ?> 
+0

很安静很明显,一个人不能没有测试该代码有标记...你会介意分享吗? – Rayon

+0

已更新,是您的意思? – Rhopercy

+0

我很确定这个问题与'php'没有关系..共享浏览器呈现/解析的html .. – Rayon

回答

0

因此,为了检查你可以使用jQuery的复选框。

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

上面的例子将检查ID为“checkboxId”的复选框,改变truefalse将取消选中该复选框;

如果你想检查有多少或哪些输入被检查,你可以使用由jquery选择器返回的数组的长度。

如果以单词“测试”所有IDS复选框下面将检查被检查:

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

+0

我现在要测试这个,等待反馈 – Rhopercy

+0

这可以帮助我进行序列号验证,但是我认为您会对正确的轨道给予支持,谢谢! – Rhopercy

+0

你还不知道该怎么办?我可以尝试将它添加到我的答案 – njfife