我是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());
});
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top