如何将for循环php传递给javascript


How to pass for loop php to javascript

我有多个编辑记录。我使用下面的脚本来比较文本框2中文本框1的值。但问题是,当我试图编辑多个记录时。脚本仅对第一条记录起作用。如何将php中的for循环传递给javascript?

对于环路

$id=$_POST['checkbox'];
$N = count($id);
for($i=0; $i < $N; $i++)
{

这将根据已选中的复选框的数量获取所有记录。当我得到循环中的所有值时,打开记录取决于计数器值。就像这样,我如何将for循环函数传递给javascript?

<script>
$('#sbtBtn').live('click',function(){
    var textBox1=document.getElementById('pr_qty[]').value;
    var textBox2=document.getElementById('pr_total').value;

    if((+textBox2) > textBox1){
      alert('value is greater than quantity');  
        return false;
    }else{
         }
});
</script>
<div class="container">
<form class="form-horizontal" action="" method="post">    
<?php
$id=$_POST['checkbox'];
$N = count($id);
for($i=0; $i < $N; $i++)
{
    $result1 = $mysqli->query("
SELECT a.item_name, a.item_description, a.counter, b.counter, b.pr, b.total_quantity
FROM app a
LEFT OUTER JOIN purchase_request b
ON a.counter=b.counter
WHERE a.counter='$id[$i]'
    ");
    while ($row = $result1->fetch_assoc())
      { ?>
      <div class="thumbnail">
    <div style="display:none;">
    <div class="control-label"></div>
    <div class="controls">
        <input name="counter[]" class="textbox" type="text" value="<?php echo $row['counter'] ?>" readonly="readonly"/>
    </div>
    </div>

    <div class="control-label"  style='float:left;width:25%;margin-left:10%;text-align:left;margin-bottom:3px;'>Item</div>
    <div class="controls" style='float:left;width:65%;margin-bottom:3px;'>
        <input name="firstname[]" class="textbox" type="text" value="<?php echo $row['item_name'] ?>" readonly="readonly"/>
    </div>
    <div class="control-label"  style='float:left;width:25%;margin-left:10%;text-align:left;margin-bottom:3px;'>Description</div>
    <div class="controls" style='float:left;width:65%;margin-bottom:3px;'>
        <input name="lastname[]" class="textbox" type="text" value="<?php echo $row['item_description'] ?>" readonly="readonly"/>
    </div>
    <div class="control-label"  style='float:left;width:25%;margin-left:10%;text-align:left;margin-bottom:3px;'>PR Quantity</div>
    <div class="controls" style='float:left;width:65%;margin-bottom:3px;'>
        <input name="pr_qty[]" id="pr_qty[]"  class="textbox" type="text" value="<?php echo $row['total_quantity']; ?>" />
        <input id="pr_total" class="textbox" type="text" value="<?php $result2 = $mysqli->query("SELECT *, SUM(quantity) total_quantity FROM purchase_order WHERE counter='$id[$i]'");
        while($rows = $result2->fetch_assoc()){ echo $rows['total_quantity']; }
        ?>">
    </div>
    <div class="control-label"  style='float:left;width:25%;margin-left:10%;text-align:left;margin-bottom:3px;'>PR #</div>
    <div class="controls">
        <input name="pr[]" class="textbox" type="text" value="<?php echo $row['pr'] ?>" />
    </div>
    </div>
    <br>
      <?php 
      }
}
?>
<input name="submit" type="submit" id="sbtBtn" value="Update">
</form>
</div>

不能给多个元素相同的id,必须给文本框唯一的id。在您的函数中,您通过Id获取文本框,将其更改为class,并为文本框1和2分别指定类。否则,您的脚本将只在第一条记录上工作。

js更改

var textBox1=document.getElementsByClassName('tb1');
var textBox2=document.getElementsByClassName('tb2');
for(var i=0; i< textBox1.length; i++){
if((textBox2[i].value) > textBox1[i].value){
      alert('value is greater than quantity');  
        return false;
    }else{
         }

}

html更改

 <input name="pr_qty[]" id="pr_qty[]"  class="textbox tb1" type="text" value="<?php echo $row['total_quantity']; ?>" />
            <input id="pr_total" class="textbox tb2" type="text" value="<?php $result2 = $mysqli->query("SELECT *, SUM(quantity) total_quantity FROM purchase_order WHERE counter='$id[$i]'");
            while($rows = $result2->fetch_assoc()){ echo $rows['total_quantity']; }
            ?>">

在onclick事件中,您可以读取输入字段值,如:

编辑:

  var val1 = $("input[name='UR_ELE1_NAME']").val();
  var val2 = $("input[name='UR_ELE2_NAME']").val();

你可以比较一下:if(val1 > val2){ .....}

我希望这能有所帮助。