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));
}
}
答案 0 :(得分:1)
因为你在循环中创建了复选框所以所有复选框都有相同的id
和'onclick'功能,所以每当你点击任何一个复选框时,函数都会调用,所以将唯一的id设置为复选框并设置函数:
$('#uniqueId').click(function(){
//do your work here
});
或在你的循环中将onclick
函数设置为仅用于调用此函数的函数。
答案 1 :(得分:0)
您可以在复选框中使用任何标志来提醒操作已经执行(如addClass或jQuery.data),并在函数开始时检查该类或数据,如果它已经存在则只返回。
答案 2 :(得分: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>