yii2 dropDownList从所有索引获取值总是迟到一步

时间:2017-04-04 07:58:52

标签: javascript drop-down-menu yii2

我使用yii2动态形式的wbraganca和动态形式我使用kartik / select2。这是我的观看代码:

type | balance
1      3
2      11
3      1

这是我的javascript代码

<div class="col-sm-8 col-md-3">                     
    <?= $form->field($detail, "[{$i}]item_id")->widget(Select2::className(), [
        'data' => ArrayHelper::map(Item::find()->all(), 'id', 'name'),
        'language' => 'en',
        'options' => ['placeholder' => 'Select a item ...', 'onchange' => 'getItemPrice($(this))'],
        'pluginOptions' => [
            'allowClear' => true,                               
         ],
   ]);
?>
</div>
<div class="col-sm-4 col-md-2">
   <?= $form->field($detail, "[{$i}]qty")->widget(MaskedInput::className(),
    [
        'clientOptions' => [
            'alias' => 'numeric',
            'groupSeparator' => ',',
            'digits' => 0,
            'autoGroup' => true,
            'removeMaskOnSubmit' => true,
            'rightAlign' => false,                                  
        ],
        'options' => [
            'class' => 'form-control',
            'onchange' => 'calculateSubtotal($(this))',                     
        ]                               
    ]) ?>
    </div>
    <div class="col-sm-4 col-md-2">
         <?= $form->field($detail, "[{$i}]price")->widget(MaskedInput::className(),
        [
            'clientOptions' => [
               'alias' => 'numeric',
               'groupSeparator' => ',',
               'digits' => 0,
               'autoGroup' => true,
               'removeMaskOnSubmit' => true,
               'rightAlign' => false,                               
            ],
            'options' => [
                'class' => 'form-control',
                'onchange' => 'calculateSubtotal($(this))',                                 
            ]
    ]) ?>
    </div>
        <div class="col-sm-4 col-md-2">
            <?= $form->field($detail, "[{$i}]total")->widget(MaskedInput::className(),
                [
                    'clientOptions' => [
                        'alias' => 'numeric',
                        'groupSeparator' => ',',
                        'digits' => 0,
                        'autoGroup' => true,
                        'removeMaskOnSubmit' => true,
                        'rightAlign' => false,
                    ]
                ]) ?>
    </div>

当我选择第一项(价格150,000和数量1)时,函数计算总计给出结果0,然后我添加第二项(价格370,000和数量1),它给出结果总数= 150,000。当我将第二个项目更改为另一个价格为55,000的项目时,结果总计为520,000。

我错过了什么?请指教。 感谢

2 个答案:

答案 0 :(得分:1)

通过将函数$(".list").append('<div>' + JSON.parse(data).Question1 + '</div>'); 中的代码calculateTotal(Number(index)+1);移动到大括号getItemPrice(item)中,我发现了这个问题。 现在当我删除第二项时,如何再次执行calculateTotal?

答案 1 :(得分:0)

已经找到了我需要的东西。 只需添加这些代码即可重新计算

jQuery(".dynamicform_wrapper").on("afterDelete", function(e) {
    jQuery(".dynamicform_wrapper .remove-item").each(function(i) {                
        calculateTotal(i+1);
    });
});