two modal in one active form always execute first modal that we have clicked

Hi All,

Now i working in Pengiriman-Produksi controller and create a new input. This new input could take reference from another two controller (contract and ticket-timbangan controller with action "List") using modal.

when i click button to show modal from ticket, it was ok. but when i click second button to show modal from contract, it also execute first script in first modal user called.

what is wrong here?

new input script (pengiriman-produksi/create)




<?php


use yii\bootstrap\Modal;

use yii\helpers\ArrayHelper;

use yii\helpers\Html;

use yii\helpers\Url;

use yii\widgets\ActiveForm;


/* @var $this yii\web\View */

/* @var $model app\models\PengirimanProduksi */

/* @var $form yii\widgets\ActiveForm */

?>


<div class="pengiriman-produksi-form">

    <?php $form = ActiveForm::begin(); ?>

    <div class="row">

        <div class="col-xs-12">

            <?= $form->field($model, 'id')->textInput(['maxlength' => true, 'readonly' => true]) ?>

        </div>

        <div class="col-xs-6">

            <?= $form->field($model, 'send_date')->widget(kartik\widgets\DatePicker::className(),

                [

                    'type' => kartik\widgets\DatePicker::TYPE_COMPONENT_APPEND,

                    'value' => date('Y-m-d'),

                    'pluginOptions' => [

                        'autoclose' => true,

                        'format' => 'yyyy-mm-dd'

                    ],

                ]) ?>


        </div>

        <div class="col-xs-6">

            <div class="form-group">

                <label class="control-label">&nbsp;</label>

                <div id="BtnSearchTicket">

                    <?= Html::button('Search Ticket', [

                        //'value' => Url::to('/ticket-timbangan/list'),

                        'value' => Yii::$app->urlManager->createUrl('/ticket-timbangan/list'),

                        'class' => 'btn btn-primary showModal',

                        'id' => 'BtnModalTicketList',

                        'title' => 'List Ticket Timbangan',

//                        'data-toggle'=> 'modal',

//                        'data-target'=> '#modalTicketList',

//                        'data-dismiss' => 'modal'

                    ]) ?>

                </div>

                <div class="help-block"></div>

            </div>

        </div>

        <div class="col-xs-12">

            <?= $form->field($model, 'customer_id')->widget(kartik\select2\Select2::className(), [

                    'data' => ArrayHelper::map(\app\models\Customer::find()->all(), 'id', 'name'),

                    'options' => ['placeholder' => 'Select customer'],

                    'pluginOptions' => [

                        'allowClear' => true,

                    ],

                ]

            ) ?>


            <?= $form->field($model, 'vehicle_id')->widget(kartik\select2\Select2::className(), [

                'data' => \yii\helpers\ArrayHelper::map(\app\models\Vehicle::find()->all(), 'id', 'id'),

                'options' => ['placeholder' => 'Select vehicle'],

                'pluginOptions' => [

                    'allowClear' => true,

                ],

            ]) ?>

        </div>

        <div class="col-xs-6">

            <?= $form->field($model, 'contract_no')->textInput(['maxlength' => true]) ?>

        </div>

        <div class="col-xs-6">

            <div class="form-group">

                <label class="control-label">&nbsp;</label>

                <div id="BtnSearchContract">

                    <?= Html::button('Search Contract', [

                        //'value' => Url::to('contract/list'),

                        'value' => Yii::$app->urlManager->createUrl('/contract/list'),

                        'class' => 'btn btn-primary showModal',

                        'id' => 'BtnModalContractList',

                        'title' => 'List Contract',

//                        'data-toggle'=> 'modal',

//                        'data-target'=> '#modalContractList',

//                        'data-dismiss' => 'modal'

                    ]) ?>

                </div>

                <div class="help-block"></div>

            </div>

        </div>

        <div class="col-xs-6">

            <?= $form->field($model, 'item_id')->widget(kartik\select2\Select2::className(), [

                'data' => \yii\helpers\ArrayHelper::map(\app\models\ItemProduction::find()->all(), 'id', 'name'),

                'options' => ['placeholder' => 'Select item'],

                'pluginOptions' => [

                    'allowClear' => true

                ],

            ]) ?>

        </div>

        <div class="col-xs-6">

            <?= $form->field($model, 'satuan_id')->widget(kartik\select2\Select2::className(), [

                'data' => \yii\helpers\ArrayHelper::map(\app\models\Satuan::find()->all(), 'id', 'name'),

                'options' => ['placeholder' => 'Select satuan'],

                'pluginOptions' => [

                    'allowClear' => true,

                ],

            ]) ?>

        </div>

        <div class="col-xs-12">

            <?= $form->field($model, 'bruto_tbg')->widget(\yii\widgets\MaskedInput::className(),

                [

                    'clientOptions' => [

                        'alias' => 'numeric',

                        'groupSeparator' => ',',

                        'digits' => 0,

                        'autoGroup' => true,

                        'removeMaskOnSubmit' => true,

                        'rightAlign' => false,

                    ]

                ]) ?>


            <?= $form->field($model, 'bruto_a')->widget(\yii\widgets\MaskedInput::className(),

                [

                    'clientOptions' => [

                        'alias' => 'numeric',

                        'groupSeparator' => ',',

                        'digits' => 0,

                        'autoGroup' => true,

                        'removeMaskOnSubmit' => true,

                        'rightAlign' => false,

                    ]

                ]) ?>


            <?= $form->field($model, 'bruto_b')->widget(\yii\widgets\MaskedInput::className(),

                [

                    'clientOptions' => [

                        'alias' => 'numeric',

                        'groupSeparator' => ',',

                        'digits' => 0,

                        'autoGroup' => true,

                        'removeMaskOnSubmit' => true,

                        'rightAlign' => false,

                    ]

                ]) ?>


            <?= $form->field($model, 'bruto_c')->widget(\yii\widgets\MaskedInput::className(),

                [

                    'clientOptions' => [

                        'alias' => 'numeric',

                        'groupSeparator' => ',',

                        'digits' => 0,

                        'autoGroup' => true,

                        'removeMaskOnSubmit' => true,

                        'rightAlign' => false,

                    ],

                    'options' => [

                        'readonly' => true,

                        'class' => 'form-control',

                    ]

                ]) ?>


            <?= $form->field($model, 'tara_tbg')->widget(\yii\widgets\MaskedInput::className(),

                [

                    'clientOptions' => [

                        'alias' => 'numeric',

                        'groupSeparator' => ',',

                        'digits' => 0,

                        'autoGroup' => true,

                        'removeMaskOnSubmit' => true,

                        'rightAlign' => false,

                    ]

                ]) ?>


            <?= $form->field($model, 'tara_a')->widget(\yii\widgets\MaskedInput::className(),

                [

                    'clientOptions' => [

                        'alias' => 'numeric',

                        'groupSeparator' => ',',

                        'digits' => 0,

                        'autoGroup' => true,

                        'removeMaskOnSubmit' => true,

                        'rightAlign' => false,

                    ]

                ]) ?>


            <?= $form->field($model, 'tara_b')->widget(\yii\widgets\MaskedInput::className(),

                [

                    'clientOptions' => [

                        'alias' => 'numeric',

                        'groupSeparator' => ',',

                        'digits' => 0,

                        'autoGroup' => true,

                        'removeMaskOnSubmit' => true,

                        'rightAlign' => false,

                    ]

                ]) ?>


            <?= $form->field($model, 'tara_c')->widget(\yii\widgets\MaskedInput::className(),

                [

                    'clientOptions' => [

                        'alias' => 'numeric',

                        'groupSeparator' => ',',

                        'digits' => 0,

                        'autoGroup' => true,

                        'removeMaskOnSubmit' => true,

                        'rightAlign' => false,

                    ],

                    'options' => [

                        'readonly' => true,

                        'class' => 'form-control',

                    ]

                ]) ?>

        </div>

        <div class="col-xs-4">

            <?= $form->field($model, 'netto')->widget(\yii\widgets\MaskedInput::className(),

                [

                    'clientOptions' => [

                        'alias' => 'numeric',

                        'groupSeparator' => ',',

                        'digits' => 0,

                        'autoGroup' => true,

                        'removeMaskOnSubmit' => true,

                        'rightAlign' => false,

                    ],

                    'options' => [

                        'readonly' => true,

                        'class' => 'form-control',

                    ]

                ]) ?>

        </div>

        <div class="col-xs-4">

            <?= $form->field($model, 'price')->widget(\yii\widgets\MaskedInput::className(),

                [

                    'clientOptions' => [

                        'alias' => 'numeric',

                        'groupSeparator' => ',',

                        'digits' => 0,

                        'autoGroup' => true,

                        'removeMaskOnSubmit' => true,

                        'rightAlign' => false,

                    ]

                ]) ?>

        </div>

        <div class="col-xs-4">

            <?= $form->field($model, 'total')->widget(\yii\widgets\MaskedInput::className(),

                [

                    'clientOptions' => [

                        'alias' => 'numeric',

                        'groupSeparator' => ',',

                        'digits' => 0,

                        'autoGroup' => true,

                        'removeMaskOnSubmit' => true,

                        'rightAlign' => false,

                    ],

                    'options' => [

                        'readonly' => true,

                        'class' => 'form-control',

                    ]

                ]) ?>

        </div>

        <div class="col-xs-12">

            <?= $form->field($model, 'sender')->textInput(['maxlength' => true]) ?>


            <?= $form->field($model, 'driver')->textInput(['maxlength' => true]) ?>


            <?= $form->field($model, 'remark')->textarea(['rows' => 6]) ?>


            <?= $form->field($model, 'ticket_id')->textInput()->hiddenInput()->label(false) ?>


            <?= $form->field($model, 'contract_id')->textInput()->hiddenInput()->label(false) ?>

        </div>

    </div>

    <div class="form-group">

        <?= Html::submitButton($model->isNewRecord ? 'Create' : 'Update', ['class' => $model->isNewRecord ? 'btn btn-success' : 'btn btn-primary']) ?>

    </div>


    <?php ActiveForm::end(); ?>

    <?php

    Modal::begin([

        'headerOptions' => ['id' => 'modalHeader'],

        'id' => 'modal',

        'size' => 'modal-lg',

        'closeButton' => [

            'id'=>'close-button',

            'class'=>'close',

            'data-dismiss' =>'modal',

        ],

        'class' => 'style=width:auto',

        'clientOptions' => [

            'backdrop' => false, 'keyboard' => true

        ]

    ]);

    echo "<div id='modalContent'></div>";

    Modal::end();

    ?>

    

</div>


<?php

$script = <<< JS


$('#pengirimanproduksi-bruto_tbg').change(function(){

    calculateBruto_C();

});


$('#pengirimanproduksi-bruto_a').change(function(){

    calculateBruto_C();

});


$('#pengirimanproduksi-bruto_b').change(function(){

    calculateBruto_C();

});


function calculateBruto_C(){

    var bruto_tbg = $('#pengirimanproduksi-bruto_tbg').val(); bruto_tbg = bruto_tbg == "" ? 0 : Number(bruto_tbg.split(",").join(""));

    var bruto_a = $('#pengirimanproduksi-bruto_a').val(); bruto_a = bruto_a == "" ? 0 : Number(bruto_a.split(",").join(""));

    var bruto_b = $('#pengirimanproduksi-bruto_b').val(); bruto_b = bruto_b == "" ? 0 : Number(bruto_b.split(",").join(""));

    $('#pengirimanproduksi-bruto_c').val(roundUp(bruto_tbg + (bruto_tbg * bruto_a / 100) + bruto_<img src='http://www.yiiframework.com/forum/public/style_emoticons/default/cool.gif' class='bbc_emoticon' alt='B)' />);

    calculateNetto();

};


$('#pengirimanproduksi-tara_tbg').change(function(){

    calculateTara_C();

});


$('#pengirimanproduksi-tara_a').change(function(){

    calculateTara_C();

});


$('#pengirimanproduksi-tara_b').change(function(){

    calculateTara_C();

});


function calculateTara_C(){

    var tara_tbg = $('#pengirimanproduksi-tara_tbg').val(); tara_tbg = tara_tbg == "" ? 0 : Number(tara_tbg.split(",").join(""));

    var tara_a = $('#pengirimanproduksi-tara_a').val(); tara_a = tara_a == "" ? 0 : Number(tara_a.split(",").join(""));

    var tara_b = $('#pengirimanproduksi-tara_b').val(); tara_b = tara_b == "" ? 0 : Number(tara_b.split(",").join(""));

    $('#pengirimanproduksi-tara_c').val(roundUp(tara_tbg + (tara_tbg * tara_a / 100) + tara_<img src='http://www.yiiframework.com/forum/public/style_emoticons/default/cool.gif' class='bbc_emoticon' alt='B)' />);

    calculateNetto();

};


function calculateNetto(){

    var bruto_c = $('#pengirimanproduksi-bruto_c').val(); bruto_c = bruto_c == "" ? 0 : Number(bruto_c.split(",").join(""));    

	var tara_c = $('#pengirimanproduksi-tara_c').val(); tara_c = tara_c == "" ? 0 : Number(tara_c.split(",").join(""));	

	$('#pengirimanproduksi-netto').val(bruto_c-tara_c).change();	

};


$('#pengirimanproduksi-netto').change(function(){    

	calculateTotalRp();

});


$('#pengirimanproduksi-price').change(function(){

   calculateTotalRp(); 

});


function calculateTotalRp(){

    var netto = $('#pengirimanproduksi-netto').val(); netto = netto == "" ? 0 : Number(netto.split(",").join(""));

    var price = $('#pengirimanproduksi-price').val(); price = price == "" ? 0 : Number(price.split(",").join(""));

    $('#pengirimanproduksi-total').val(netto * price);

};


function roundUp(nomor){

    if(nomor != 0){

        if(nomor % 10 == 0) return nomor;

        else return ((10-(nomor % 10)) + nomor);

    }

    return 0;

};


$(document).on('click', '.showModal', function(){

        if ($('#modal').hasClass('in')) {

            $('#modal').find('#modalContent')

                    .load($(this).attr('value'));

            document.getElementById('modalHeader').innerHTML = '<h4>' + $(this).attr('title') + '</h4>';

        } else {

            $('#modal').modal('show')

                    .find('#modalContent')

                    .load($(this).attr('value'));

            document.getElementById('modalHeader').innerHTML = '<h4>' + $(this).attr('title') + '</h4>';

        }

    });


JS;

$this->registerJs($script);

?>



and this is action list in contract and ticket controller




<?php

use yii\helpers\Html;

use yii\grid\GridView;

use yii\widgets\Pjax;


?>


<div class="ticket-timbangan-list">

    <?php

    $gridColumns = [

        [

            'class' => 'yii\grid\ActionColumn',

            'template' => '{select}',

            'buttons' => [

                'select' => function($url, $model, $key){

                    return Html::button('Select', [

                        'title' => Yii::t('yii', 'Select'),

                        'aria-label' => Yii::t('yii', 'Select'),

                        'class' => 'btn btn-primary select-row',

                        'data-id' => $model->id,

                    ]);

                },

            ],

        ],

        'id',

        'timbang_date',

        [ 'attribute' => 'agen_id', 'value' => 'agen.name' ],

        [ 'attribute' => 'item_id', 'value' => 'item.name' ],

        'vehicle_id',

        'bruto',

        'tara',

        'netto',

        'remark:ntext',


    ] ?>

    <?php Pjax::begin(['id' => 'ticketlist']); ?>

    <?=

    GridView::widget([

        'id' => 'kv-grid-ticketlist',

        'dataProvider'=>$dataProvider,

        'filterModel'=>$searchModel,

        'columns'=>$gridColumns,

    ]);

    ?>

    <?php Pjax::end(); ?>

</div>

<?php

$script = <<< JS

$(document).on('click', '.select-row', function(){    

    // get id from custom button    

    var id = $(this).attr('data-id');

    $.get('../ticket-timbangan/get-ticket', {id : id}, function(data){

            var data = $.parseJSON(data);                    

            $('#pengirimanproduksi-ticket_id').val(data.id);

            $('#pengirimanproduksi-vehicle_id').val(data.vehicle_id).trigger('change');

            $('#pengirimanproduksi-item_id').val(data.item_id).trigger('change');            

            $('#pengirimanproduksi-bruto_tbg').val(data.bruto);

            $('#pengirimanproduksi-tara_tbg').val(data.tara);

            $('#pengirimanproduksi-remark').val(data.remark);            

    });

    $('#modal').modal('hide');        

});


JS;

$this->registerJs($script);

?>






<?php

use yii\helpers\Html;

use yii\grid\GridView;

use yii\widgets\Pjax;


?>


<div class="contract-list">

    <?php

    $gridColumns = [

        [

            'class' => 'yii\grid\ActionColumn',

            'template' => '{select}',

            'buttons' => [

                'select' => function($url, $model, $key){

                    return Html::button('Select', [

                        'title' => Yii::t('yii', 'Select'),

                        'aria-label' => Yii::t('yii', 'Select'),

                        'class' => 'btn btn-primary select-row',

                        'data-id' => $model->id,

                    ]);

                },

            ],

        ],

        'id',

        'date',

        'contract_no',

        'sent:boolean',

        ['attribute' => 'item_id', 'value' => 'item.name'],

        ['attribute' => 'customer_id', 'value' => 'customer.name'],

        [

            'attribute' => 'price',

            'format' => ['decimal', 2],

        ],

        [

            'attribute' => 'payment_price',

            'format' => ['decimal', 2],

        ],

        [

            'attribute' => 'qty',

            'format' => ['decimal', 2],

        ],

        [

            'attribute' => 'price_x',

            'format' => ['decimal', 2],

        ]

    ] ?>

    <?php Pjax::begin(['id' => 'contractlist']); ?>

    <?=

    GridView::widget([

        'id' => 'kv-grid-contractlist',

        'dataProvider'=>$dataProvider,

        'filterModel'=>$searchModel,

        'columns'=>$gridColumns,

    ]);

    ?>

    <?php Pjax::end(); ?>

</div>

<?php

$script = <<< JS


$(document).on('click', '.select-row', function(){    

    // get id from custom button    

    var id = $(this).attr('data-id');

    $.get('../contract/get-contract', {id : id}, function(data){

            var data = $.parseJSON(data);                    

            $('#pengirimanproduksi-contract_id').val(data.id);

            $('#pengirimanproduksi-contract_no').val(data.contract_no);            

            $('#pengirimanproduksi-item_id').val(data.item_id).trigger('change');    

            $('#pengirimanproduksi-customer_id').val(data.customer_id).trigger('change');

            $('#pengirimanproduksi-price').val(data.payment_price);                    

    });

    $('#modal').modal('hide');        

});


JS;

$this->registerJs($script);

?>



this was the image error happened because execute first modal.

Error Image

I have observed, every time i call first modal, it will execute as many as i call.

please see the image. Image

I have solved my problem.




'buttons' => [

                'select' => function($url, $model, $key){

                    return Html::button('Select', [

                        'title' => Yii::t('yii', 'Select'),

                        'aria-label' => Yii::t('yii', 'Select'),

                        'class' => 'btn btn-primary select-row',

                        'data-id' => $model->id,

                    ]);

                },

            ],



just need to make differences the class between two gridview select button.