我正在写一个小发票申请Yii
。我有database
模型item
。item database
是这样的
+++++++++++++++++
| InvoiceItems |
+++++++++++++++++
+ id +
+ name +
+ description +
+ unit_cost +
+ quantity +
+ tax +
+ total +
+++++++++++++++++
现在,在item model
我制作了一个下拉列表中,我unit_cost, quantity, tax
在 Ajax 中获取所有项目名称及其等。为了做到这一点total
,我的业务逻辑如下:
unit_cost
将乘以quantity
- 然后税收将被添加到总数中。
- 总数最终应该会出现在文件的
total
字段中_form.php
。
为了计算,我写了这个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>
当我手动插入值时这工作正常,但当值来自数据库时它不起作用。我完全被困住了。
更新
当我试图通过 ajax 在 Firefox 的控制台选项卡中从数据库中获取后查看值时console.log("#InvoiceItems_quantity").val()
,它正在显示an empty string
。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
它时,它根本不起作用。控制台面板中没有显示任何值。