0

HTML&PHP

我列出票务信息;

  <table>      
  <?php
  while($values = mysql_fetch_array($ticketInfo)){ 
    echo '<tr>';
    echo '<td id="ticketPrice">'. $values['ticket_price'] .'</td>';
    echo '<td id="myBonus">'. $values['bonus']*5 .'</td>';
    echo '<td><input type="checkbox" name="use_bonus" onclick="useMyBonus();"  id="myBonusId" /></td>';
    echo '</tr>';
  }      
  ?>
  </table>

当用户单击复选框时,会处理一个 jquery 脚本来计算使用奖金的折扣并将返回数据写入ticketPrice ID。但是有多个复选框,如果用户单击另一个复选框脚本再次计算,但我不这样做。我怎样才能只处理一次?

我的jQuery代码;

  function useMyBonus(){
    myBonus         = parseInt($("#myBonus").text());
    ticketPrice     = parseInt($("#ticketPrice").text());
    checked         = $("#myBonusId").is(':checked');



    if(checked == true){
        $("#ticketPrice").text(ticketPrice-(myBonus/2));

    }else{
        $("#ticketPrice").text(ticketPrice+(myBonus/2));

    }
} 
4

3 回答 3

1

因为您在循环中创建了复选框,所以所有复选框都具有相同id的“onclick”功能,因此每当您单击任何该复选框功能时都会被调用,因此将唯一 ID 设置为复选框并设置功能:

$('#uniqueId').click(function(){
//do your work here
});

或在您的循环中将onclick函数设置为仅要调用此函数的函数。

于 2012-11-22T13:59:29.297 回答
0

您可以使用复选框中的任何标志来提醒操作尚未执行(如 addClass 或 jQuery.data),并在函数开始时检查该类或数据,如果它已经存在则简单地返回。

于 2012-11-22T13:58:45.803 回答
0

这将确保您的复选框是唯一的 -

<table>      
<?php
$i=0;
      while($values = mysql_fetch_array($ticketInfo)){ 
        echo '<tr>';
        echo '<td id="ticketPrice">'. $values['ticket_price'] .'</td>';
        echo '<td>'. $values['bonus']*5 .'</td>';
        echo '<td><input type="checkbox" name="use_bonus" value="' .$i++ . "_" . $values['ticket_price']  . '"  /></td>';
        echo '</tr>';
      }      
      ?>
      </table>

这将遍历所有复选框并继续计算

 <script type="text/javascript">
    function useMyBonus()
    {
        var myBonus=0;


        checkboxes = document.getElementsByName('use_bonus');

        for(var i in checkboxes)
        {
            if(checkboxes[i].checked)

            {
                          var n=str.split("_");
                          //now your ticket price would be n[1], use n[1] for your bonus calculation 
                        //calculate myBonus         
            }           


        }
    }

    </script>
于 2012-11-22T14:07:57.643 回答