如何使用PHP数据中的循环执行javascript/jquery计算?
我在我的PHP文件中创建了一个循环,生成10行。每行有四个方框,下面是总计 该场景是,当用户输入数量和价格时,使用jQuery自动更改总数,同时也更改总计。与如何使用PHP数据中的循环执行javascript/jquery计算?,php,javascript,jquery,Php,Javascript,Jquery,我在我的PHP文件中创建了一个循环,生成10行。每行有四个方框,下面是总计 该场景是,当用户输入数量和价格时,使用jQuery自动更改总数,同时也更改总计。与第2行相同。我的问题是,我无法从我的PHPinput字段访问id 以下是我所做的: for($i = 1; $i < 11; $i++){ echo "<!-- ITEM {$i} -->"; echo "<tr>"; echo "<td><input type=
第2行
相同。我的问题是,我无法从我的PHPinput
字段访问id
以下是我所做的:
for($i = 1; $i < 11; $i++){
echo "<!-- ITEM {$i} -->";
echo "<tr>";
echo "<td><input type='text' name='qty{$i}' class='k-textbox' id='qty{$i}'></td>";
echo "<td><input type='text' name='item{$i}' class='k-textbox' id='item{$i}'></td>";
echo "<td><input type='text' name='price{$i}' class='k-textbox' id='price{$i}'></td>";
echo "<td><input type='text' name='total{$i}' class='k-textbox' id='total{$i}'></td>";
echo "<tr>";
}
<tr>
<td>GRAND TOTAL</td>
<td><input type='text' name='gtotal' value='0.00' id='gtotal' class='k-textbox' />
</tr>
($i=1;$i<11;$i++)的{
回声“;
回声“;
回声“;
回声“;
回声“;
回声“;
回声“;
}
总计
这是我的jQuery代码:
var x = 0;
for(x = 1; x < 11; x++){
$('#qty'+x, '#price'+x).on('input',function() {
var qty = parseInt($('#qty'+x).val());
var price = parseFloat($('#price'+x).val());
$('#total'+x).val((qty * price ? qty * price : 0).toFixed(2));
});
}
var x=0;
对于(x=1;x<11;x++){
$('数量'+x','价格'+x).on('输入',函数(){
var qty=parseInt($('#qty'+x).val());
var price=parseFloat($('#price'+x).val());
$(#total'+x).val((数量*价格?数量*价格:0).toFixed(2));
});
}
就这些。我希望您能帮助我。我可能没有正确理解这个问题,但为什么不让PHP计算总计,然后将值放入总计?首先生成html,如下所示,让我们使用类附加触发器,并定义一个名为
数据类型
的自定义类型以进行测试,还可以添加数据行
,以跟踪您所在的行
for($i = 1; $i < 11; $i++){
echo "<tr>";
echo "<td><input type='text' data-row='{$i}' data-type='qty' name='qty{$i}' class='k-textbox' id='qty{$i}'></td>";
echo "<td><input type='text' data-row='{$i}' data-type='item' name='item{$i}' class='k-textbox' id='item{$i}'></td>";
echo "<td><input type='text' data-row='{$i}' data-type='price' name='price{$i}' class='k-textbox' id='price{$i}'></td>";
echo "<td><input type='text' data-row='{$i}' data-type='total' name='total{$i}' class='k-textbox' id='total{$i}'></td>";
echo "<tr>";
}
($i=1;$i<11;$i++)的{
回声“;
回声“;
回声“;
回声“;
回声“;
回声“;
}
然后让我们在不需要冗余循环的情况下处理jquery
<script type="text/javascript">
$(function () {
$(".k-textbox").input(function (evt) {
var that = $(this);
if (that.attr('data-type') != 'price' && that.attr('data-type') != 'qty) return;
var row = that.attr('data-row');
var qty = parseInt($('#qty'+row).val());
var price = parseFloat($('#price'+row).val());
$('#total'+row).val((qty * price ? qty * price : 0).toFixed(2));
});
});
</script>
$(函数(){
$(“.k-textbox”).input(函数(evt){
var,该值=$(此值);
如果(that.attr('data-type')!='price'和&that.attr('data-type')!='qty)返回;
var row=that.attr('data-row');
var qty=parseInt($('#qty'+行).val());
var price=parseFloat($('#price'+row.val());
$(“#总计”+行).val((数量*价格?数量*价格:0).toFixed(2));
});
});
没有输入
事件
很容易获得id
属性,您真正需要做的是添加$(documnet).ready(..)
并将输入
事件替换为更改
事件
因此,更新js代码:
更新:我错误地使用了#选择器
,并将其更新为[id^=…]
$(document).ready(function(){
// well,$('selector1,selector2') not $('selector1','selector2')
$('[id^=qty] , [id^=price]').on('change',function() {
var index=this.id.match(/\d+/)[0];
var qty = parseInt($('#qty'+index).val());
var price = parseFloat($('#price'+index).val());
$('#total'+index).val((qty * price ? qty * price : 0).toFixed(2));
});
});
你的问题是…?我很困惑。。。无论如何,为什么需要PHP从输入字段访问ID?PHP不是定义ID的人吗?问题很简单,有一种更好的方法可以做到这一点,我需要jquery输入的ID。还有其他方法来执行这个逻辑吗?你去检查我的答案,它不那么混乱,也没有javascript循环,因为我想在我的客户端中执行它。@user2585508这是因为我犯了一个错误,尝试使用
parseInt
但是得到了NaN
。我已经将parseInt
替换为正则表达式。我认为它可以工作。试试看。仍然不工作。你有电子邮件吗,这样我就可以把我的全部代码发给你?请告诉我y的错误是什么。@user2585508zhang6464@gmail.com