Вопрос

Я новичок в Yii Framework и начните учиться на небольшом веб-проекте, чтобы я застрял на этой позиции как как ее решить.

У меня есть «order_form», где пользователь подтвердил свой заказ, и если хочет изменить «qty», так что только это может измениться, тогда поминут это, мне нужно изменить общее значение, чтобы рассчитать на лету на той же форме, если Qty изменится Пользователь.

BeginWidget («CiCiveForm», массив («ID» => «форма заказа», «ENALLEAJAXVALIDALION» => 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 (); ?>

$ (Документ). Страри (функция () {var myvar = '999'; $ ("# model_total"). Val (Myvar);}); «

Здесь я обновил свой скрипт, чтобы уточнить, что мне нужно, поэтому здесь я пытаюсь пройти значение «999» на «Total» в той же форме, но это не работает. Возможно, я не хватаю / делаю что-то не так.

Я также хотел бы понадобиться в другом способе расчета qty x цена и получить результат от контроллера, если это возможно, если это так, пожалуйста, пройдите через код.

Это было полезно?

Решение

Одна из причин, по которой у вас есть не работает JS: Вы уверены, что «Total» идентификатор поля «Model_Total»? Обычно это что-то вроде «order_total». Посмотрите на ваш источник HTML для проверки (Firebug помогает).

В любом случае, некоторые другие предложения:

Обычный способ разрешить этот заказ Общая проблема - кнопка «Тележка обновлений», которая записывает форму обратно на контроллер, в котором рассчитан полное заказа, а затем страница снова отображается с новой суммой.

Еще один способ сделать это, чтобы настроить слушатель Live () (или делегата) onBlur, который делает одно из двух вещей (похоже на то, что вы пытаетесь сейчас):

(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, и обновлять его, как вы пытаетесь сделать сейчас. Просто помните, что вы не можете обновить заказ QTY в базе данных таким образом, Sine вы не попадаете на контроллер.

$("#order-form #Order_qty").live('blur',function() {
  $('#Order_total').val($('#Order_price').val() * $('#Order_qty').val());
});
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top