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スクリプトを処理して、使用ボーナス付きの割引を計算し、戻りデータをticketPriceIDに書き込みます。しかし、複数のチェックボックスがあり、ユーザーが別のチェックボックススクリプトをクリックすると、もう一度計算されますが、私はこれを行いません。どうすれば一度だけ処理できますか?

私の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など)。関数の開始時に、そのクラスまたはデータが既に存在する場合は、単にreturnを返します。

于 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 に答える