如何避免在下拉菜单上刷新

时间:2019-04-05 22:48:11

标签: javascript php html

当我使用下拉菜单在基于电子商务的购物车应用上选择数量时,在对变量进行必要的更改后,下拉菜单会刷新为1。 尽管其余变量已更改,但购物车会更改商品的数量,因此价格会自动刷新并显示1。

这是我的代码:

    <table class="table">
<tbody>
<tr>
<th></th>
<th>ITEM NAME</th>
<th>QUANTITY</th>
<th>UNIT PRICE</th>
<th>ITEMS TOTAL</th>
</tr>   
<?php       
foreach ($_SESSION["shopping_cart"] as $product){
?>
<tr>
<td>
<img src='<?php echo $product["image"]; ?>' width="90" height="80" />
</td>
<td><?php echo $product["name"]; ?><br />
<form method='post' action=''>
<input type='hidden' name='code' value="<?php echo $product["code"]; ?>" 
/>
<input type='hidden' name='action' value="remove" />
<button type='submit' class='remove'>Remover</button>
</form>
</td>
<td>
<form method='post' action=''>
<input type='hidden' name='code' value="<?php echo $product["code"]; ?>" 
/>
<input type='hidden' name='action' value="change" />
<select name='quantity' class='quantity' onChange="this.form.submit()">
<option <?php if($product["quantity"]==1) echo "selected";?>
value="1">1</option>
<option <?php if($product["quantity"]==2) echo "selected";?>
value="2">2</option>
<option <?php if($product["quantity"]==3) echo "selected";?>
value="3">3</option>
<option <?php if($product["quantity"]==4) echo "selected";?>
value="4">4</option>
<option <?php if($product["quantity"]==5) echo "selected";?>
value="5">5</option>
</select>
</form>
</td>
<td><?php echo "R$".$product["price"]; ?></td>
<td><?php echo "R$".$product["price"]*$product["quantity"]; ?></td>
</tr>
<?php
$total_price += ($product["price"]*$product["quantity"]);
}
?>
<tr>
<td id="td_tot" colspan="5" align="right">
<strong>TOTAL: <?php echo "R$".$total_price; ?></strong>
</td>
</tr>
</tbody>
</table>





and here is the head section:

    $status="";
if (isset($_POST['action']) && $_POST['action']=="remove"){
if(!empty($_SESSION["shopping_cart"])) {
    foreach($_SESSION["shopping_cart"] as $key => $value) {
      if($_POST["code"] == $key){
      unset($_SESSION["shopping_cart"][$key]);
      $status = "<div class='box' style='color:red;'>
      Produto Removido</div>";
      }
      if(empty($_SESSION["shopping_cart"]))
      unset($_SESSION["shopping_cart"]);
      }     
}
}

if (isset($_POST['action']) && $_POST['action']=="change"){
  foreach($_SESSION["shopping_cart"] as &$value){
    if($value['code'] === $_POST["code"]){
        $value['quantity'] = $_POST["quantity"];
        break;
    }
}

}
?>

我需要让它保持显示最后的选择,而经过几次尝试并在互联网上寻找答案,我只能依靠这个社区来帮助我。 谢谢。

2 个答案:

答案 0 :(得分:0)

将onChange替换为onBlur。 除非在选择菜单之外单击,否则它不会更新。

答案 1 :(得分:0)

由于Sending over the wire via HTTP, everything is a string,您必须使用 import random import string def gen(): let1 = random.choice(string.ascii_lowercase) let2 = random.choice(string.ascii_lowercase) let3 = random.choice(string.ascii_lowercase) let4 = random.choice(string.ascii_lowercase) let5 = random.choice(string.ascii_lowercase) nam = let1 + let2 + let3 + let4 + let5 def num(): num = '1234567890' number = random.choice(string.ascii_letters(num)) pas = nam + nam + number + number + nam + number print(pas) 而不是==。参见php operator here