Javascript 根据选择的下拉列表值计算多个输入值

Javascript 根据选择的下拉列表值计算多个输入值,javascript,jquery,yii2,Javascript,Jquery,Yii2,我对这个表格有点着迷。我使用yii2动态表单wbraganca克隆我的表单。我想根据下拉值分别对多个表单求和,但我得到的是对所有值求和 这是我的表格: <?php DynamicFormWidget::begin([ 'widgetContainer' => 'dynamicform_manifest', // required: only alphanumeric characters plus "_" [A-Za-z0-9_] 'widgetB

我对这个表格有点着迷。我使用yii2动态表单wbraganca克隆我的表单。我想根据下拉值分别对多个表单求和,但我得到的是对所有值求和

这是我的表格:

<?php DynamicFormWidget::begin([
    'widgetContainer' => 'dynamicform_manifest', // required: only alphanumeric characters plus "_" [A-Za-z0-9_]
    'widgetBody' => '.container-manifest', // required: css class selector
    'widgetItem' => '.item-manifest', // required: css class
    //'limit' => 4, // the maximum times, an element can be cloned (default 999)
    'min' => 1, // 0 or 1 (default 1)
    'insertButton' => '.add-item-manifest', // css class
    'deleteButton' => '.remove-item-manifest', // css class
    'model' => $modelManifest[0],
    'formId' => 'dynamic-form',
    'formFields' => [
        'id_keagenan',
        'jenis_manifest',
        'jlh_manifest',
    ],
]); ?>
<div class="container-manifest"><!-- widgetContainer -->
<?php foreach ($modelManifest as $i => $modelManifest): ?>
    <div class="item-manifest panel panel-default"><!-- widgetBody -->
        <div class="panel-heading">
            <h3 class="panel-title pull-left">Manifest Keagenan</h3>
            <div class="pull-right">
                <button type="button" class="add-item-manifest btn btn-success btn-xs"><i class="glyphicon glyphicon-plus"></i></button>
                <button type="button" class="remove-item-manifest btn btn-danger btn-xs"><i class="glyphicon glyphicon-minus"></i></button>
            </div>
            <div class="clearfix"></div>
        </div>
        <div class="panel-body">
            <?php
                // necessary for update action.
                if (! $modelManifest->isNewRecord) {
                    echo Html::activeHiddenInput($modelManifest, "[{$i}]id");
                }
            ?>
            <div class="row">
                <div class="col-sm-4">
                    <?php echo $form->field($modelManifest, "[{$i}]id_keagenan")->widget(Select2::classname(), [
                        'data' => ArrayHelper::map(Keagenan::find()->all(), 'id_keagenan', 'nama_keagenan'),
                        'language' => 'en',
                        'theme' => Select2::THEME_KRAJEE,
                        'options' => ['placeholder' => '-- Keagenan --', 'class' => 'form-control'],
                    ]); ?>
                </div>
                <div class="col-sm-4">
                    <?= $form->field($modelManifest, "[{$i}]jlh_manifest")->widget(\yii\widgets\MaskedInput::className(),
                        [
                            'clientOptions' => [
                                'alias' => 'numeric',
                                'groupSeparator' => '.',
                                'digits' => 0,
                                'autoGroup' => true,
                                'removeMaskOnSubmit' => true,
                                'rightAlign' => false,                                                                  
                            ],
                            'options' => [
                                'class' => 'form-control manifest',
                                'maxlength' => true,
                            ]                                                               
                        ])
                    ?>
                </div>
                <div class="col-sm-4">
                    <?= $form->field($modelManifest, "[{$i}]jenis_manifest")->dropDownList([ 'Berangkat' => 'Berangkat', 'Pulang' => 'Pulang'], ['class' => 'jenis_manifest form-control', 'prompt' => '-- Manifest --']) ?>
                </div>
            </div><!-- .row -->
        </div>
    </div>
<?php endforeach; ?>
</div>
<?php DynamicFormWidget::end(); ?>
更新

这是截图

我想要的结果是:

  • 贝朗加特+贝朗加特=500000+1500000=2000000
  • 普朗=500000
但我的脚本所带来的是:


Berangkat+Berangkat+Pulang=500000+1500000+500000=2500000

非常不清楚,添加表单的屏幕截图,您到底想完成什么?我建议您使用
#id
选择器,而不是
.class
选择器。请参阅上的先前答案,以便在下拉列表值更改时必须调用该函数?但是当我直接调用函数时,
'onchange'=>'getGst($(this));',它获取错误
getGst()未定义
。我想把函数放在哪里?在
create.php
内部或直接在
\u form.php
中,在
\u form.php
中不需要调用函数,但是如果您想获取值,但需要id来分隔每个字段,并且是
getGst()
在代码中不适用,请仅检查jquery部分如何从所选元素获取id。是,我需要获取该值,所以我直接像这样调用函数<代码>
只是测试,但我得到的错误是
参考错误getFunction没有定义
很不清楚,添加表单的屏幕截图,你到底想完成什么?我建议你使用
#id
选择器而不是
.class
选择器。请参阅上的先前答案,以便在下拉列表值更改时必须调用该函数?但是当我直接调用函数时,
'onchange'=>'getGst($(this));',它获取错误
getGst()未定义
。我想把函数放在哪里?在
create.php
内部或直接在
\u form.php
中,在
\u form.php
中不需要调用函数,但是如果您想获取值,但需要id来分隔每个字段,并且是
getGst()
在代码中不适用,请仅检查jquery部分如何从所选元素获取id。是,我需要获取该值,所以我直接像这样调用函数<代码>
只是测试,但我得到了错误
参考错误getFunction未定义
$(".container-manifest").on("change", ".jenis_manifest", function() {
    var jenis_manifest = $(".jenis_manifest").val();
    if(jenis_manifest == "Berangkat")
    {
        var items = $(".item-manifest");
        var sum = 0;

        items.each(function (index, elem) {
            var manifest = $(elem).find(".manifest").val().replace(/,/g , "");
            sum = parseInt(sum) + parseInt(manifest);
        });

        $("#jlh_semua_manifest_berangkat").val(sum);
    }
    else if(jenis_manifest == "Pulang")
    {
        var items = $(".item-manifest");
        var sum = 0;

        items.each(function (index, elem) {
            var manifest = $(elem).find(".manifest").val().replace(/,/g , "");
            sum = parseInt(sum) + parseInt(manifest);
        });

        $("#jlh_semua_manifest_pulang").val(sum);
    }
});