题
我是YII框架的新手,并开始在小型网络项目上学习,因此我被困在该如何解决的位置上。
我有一个'order_form',在其中用户确认其订单,如果要更改“ QTY”,所以只能更改,然后借此来更改,我需要更改总值,如果数量通过更改,则可以以相同的形式进行计算用户。
beginWidget('cactiveform',array('id'=>'订单形式','enableAjaxValidation'=> false,)); ?><div class="row">
<?php echo $form->labelEx($model,'price'); ?>
<?php echo $model->price; ?>
</div>
<div class="row">
<?php echo $form->labelEx($model,'qty'); ?>
<?php echo $form->textField($model,'qty'); ?>
<?php echo $form->error($model,'qty'); ?>
</div>
<div class="row">
<?php echo $form->labelEx($model,'total'); ?>
<?php echo $form->textField($model,'total'); ?>
</div>
endwidget(); ?>
$(document).ready(function(){var myvar ='999'; $(“#model_total”)。val(myvar);}); '
在这里,我更新了脚本以澄清我的需求,因此在这里,我试图将“ 999”的值传递给“总体”以相同的形式,但这不起作用。可能是我缺少/做错了什么。
我还希望其他方法来计算数量X价格,如果可以的话,请从控制器中获得结果,请指导代码。
解决方案
您可能无法使用的JS的原因之一是:您确定“总”字段ID是“ model_total”?通常是“ order_total”。查看您的HTML源以验证(Firebug帮助)。
无论如何,其他一些建议:
解决此订单总问题的一种常见方法是“更新购物车”按钮,将表单发布回计算总数的控制器,然后在新总计中再次呈现页面。
做到这一点的另一种方法是建立一个onblur live()(或委托)侦听器,该侦听器执行了两件事之一(类似于您现在正在尝试的内容):
(1)将形式张贴到总计重新计算的控制器的形式。这样的东西(未经测试):
$("#order-form #Order_qty").live('blur',function() {
$.ajax({
'type':'POST',
'data':$('#order-form').serialize(),
'success':function(data){$('#Order_total').val(data)}
});}
);
您需要在这样的控制器操作中进行一些操作:
if(isset($_POST['ajax']) && $_POST['ajax']==='order-form' && isset($_POST['Order'])) {
// calculate new total based on the $_POST Model_qty field
echo $new_total;
Yii::app()->end();
}
(2)您可以在JS中完全进行计算,并像您现在尝试这样做一样更新它。请记住,您不能以这种方式更新数据库中的订单数量,您不会击中控制器。
$("#order-form #Order_qty").live('blur',function() {
$('#Order_total').val($('#Order_price').val() * $('#Order_qty').val());
});
不隶属于 StackOverflow