gpt4 book ai didi

php - 在 Yii 中进行计算只是采用手动插入的值

转载 作者:行者123 更新时间:2023-12-01 04:58:29 25 4
gpt4 key购买 nike

我正在使用 Yii 编写一个小型发票应用程序。我有模型item数据库项目数据库是这样的

  +++++++++++++++++
| InvoiceItems |
+++++++++++++++++
+ id +
+ name +
+ description +
+ unit_cost +
+ quantity +
+ tax +
+ total +
+++++++++++++++++

现在,在item model中,我创建了一个下拉列表,在其中我在Ajax中获取所有项目名称及其unit_cost、数量、税收等。为了进行总计,我的业务逻辑如下:

  1. unit_cost 将乘以数量
  2. 税款将被添加到总额中。
  3. 总计最终应该会在 _form.php 文件的 total 字段中弹出。

为了计算,我编写了这个 jQuery 脚本:

<script type="text/javascript">
jQuery(document).ready(function(){
jQuery("#InvoiceItems_unit_cost, #InvoiceItems_quantity, #InvoiceItems_tax").on('keyup',function(event){
var subtotal = jQuery("#InvoiceItems_quantity").val() * jQuery("#InvoiceItems_unit_cost").val();
var total = subtotal + (subtotal * jQuery("#InvoiceItems_tax").val() / 100);
jQuery("#InvoiceItems_total").val(total);
});
});
</script>

当我手动插入值时,这工作正常,但当值来自数据库时,它就不起作用。我完全陷入困境。

更新

当我尝试在 Firefox 的控制台选项卡中通过 ajax 从数据库获取后的值时,就像 console.log("#InvoiceItems_quantity").val() 一样,它显示 空字符串。Ajax代码以json形式从数据库获取数据

        <?php echo $form->dropDownList($customers,'customer_name',CMap::mergeArray(CHtml::listData(Customers::model()->findAll(), 'customer_name',       'customer_name'
),
array(
'empty'=>array('Select'=>'- - Choose One - -'),
'id'=>'Customers_name',
'ajax'=> array(
'type'=>'GET',
'id'=>'abc',
'url'=>$this->createUrl('Invoices/customerdetails'),// action that will generate the data
'data'=>'js:"customer_name="+$(this).val()',// this is the data that we are sending to the action in the controller
'dataType'=>'json',// type of data we expect back from the server
'success'=>'js:updateFieldsCustomers',// a javascript function that will execute when the request completes
'beforeSend'=>'js:function(){
if($("#Customers_name").val() == "create_customer_link") {
addCustomers();
$("#dialogCustomers").dialog("open");
return false;
}
}',
),
'options'=>array(
'create_customer_link' => array('class'=>'create-link'),
)
)
);?>

<?php
Yii::app()->clientScript->registerScript('update','
function updateFieldsCustomers(data, textStatus, jqXHR){
// select each input field by id, and update its value
$("#InvoiceItems_unit_cost").val(data.unit_cost);
$("#InvoiceItems_quantity").val(data.quantity);
$("#InvoiceItems_discount").val(data.discount);
// similarly update the fields for the other inputs
}
');
?>

最近更新

当我尝试使用 console.log("#InvoiceItems_quantity").val() 时,我发现它显示了更改后该字段的实际值。意味着当选择一个值时,它会在控制台面板中显示先前输入的值。我认为所有这些都有效,因为我使用了 on change 函数,但是当我使用 .select 时,它根本不起作用。控制台面板中没有显示任何值。

最佳答案

我找到了这个问题的答案。应该是这样的

<script type="text/javascript">
jQuery(document).ready(function(){
jQuery("#Product_name").ajaxComplete(function(event,request,settings){
var subtotal = jQuery("#InvoiceItems_quantity").val() * jQuery("#InvoiceItems_unit_cost").val();
var total = subtotal + (subtotal * jQuery("#InvoiceItems_tax").val() / 100);
jQuery("#InvoiceItems_total").val(total);
});
});
</script>

关于php - 在 Yii 中进行计算只是采用手动插入的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12453878/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com