Javascript 根据选择的下拉列表值计算多个输入值
我对这个表格有点着迷。我使用yii2动态表单wbraganca克隆我的表单。我想根据下拉值分别对多个表单求和,但我得到的是对所有值求和 这是我的表格: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
<?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);
}
});