2016-08-11 9 views
0

「year」と「console」が選択されているときにテキストボックスに「num」を入力しようとしています。データベースクエリは、year = 'someyear'とconsole = 'someconsole'のときにテーブルからselect max(num)+1のように実行する必要があります。yii2の2つの別々のドロップダウンリストのテキストボックスonchangeでデータを入力する方法

public function actionGetForNum($yearid , $consoleid) 
    { 
     $num = Bills::find()->select('(max(num) + 1) as num')->where(['bills_year'=>$yearid])->andWhere(['console'=>$consoleid])->asArray()->one(); 
     echo Json::encode($num); 
    } 

私は一年とコンソールを選択するために、SELECT2ウィジェットを使用しています - 私のコントローラのアクションは次のようになります。年とコンソールは互いに依存しません。

<?= $form->field($model, 'bills_year')->widget(Select2::classname(), [ 
    'data' => ArrayHelper::map(Year::find()->orderBy(['yid' => SORT_DESC,])->all(),'year_year','year_year'), 
    'language' => 'en', 
    'options' => ['placeholder' => 'Select Year', 'id' => 'yearid'], 
    'pluginOptions' => [ 
     'allowClear' => true 
    ], 
    ]); ?> 

    <?= $form->field($model, 'console')->widget(Select2::classname(), [ 
    'data' => ArrayHelper::map(Console::find()->orderBy(['consoleid' => SORT_ASC,])->all(),'console','console'), 
    'language' => 'en', 
    'options' => ['placeholder' => 'Select Console','id' => 'consoleid'], 
    'pluginOptions' => [ 
     'allowClear' => true 
    ], 
    ]); ?> 

とJavaScriptのコードが、私はエラーを取得しています。このコードでは

<?php 
/* start getting the num */ 
$script = <<< JS 
$(function(){ 
    $('#yearid').change(function(){ 
     getNum(); 
    }); 
    $('#consoleid').change(function(){ 
     getNum(); 
    }); 

    var yearid = $(this).val(); 
    var consoleid = $(this).val(); 

    var getNum = $.get('index.php?r=invoice/bills/get-for-num',{ yearid : yearid, consoleid : consoleid }, function(data){ 
     alert(data); 
     var data = $.parseJSON(data); 
     $('#bills-num').attr('value',data.num); 
     }); 

}); 


JS; 
$this->registerJs($script); 
/* end getting the num */ 
?> 

IS-試してみた - TypeError: getNum is not a function はここでエラー画面である - enter image description here それを修正する方法を提案してください。

更新 -

<?php 
/* start getting the num */ 
$script = <<< JS 
$(function(){ 
    $('#yearid').change(function(){ 
     getNum(); 
    }); 
    $('#consoleid').change(function(){ 
     getNum(); 
    }); 

    var yearid = $(this).val(); 
    var consoleid = $(this).val(); 

    var getNum = function(){ 
     var yearid = String($('#yearid').val()); 
     var consoleid = String($('#consoleid').val()); 
     $.get('index.php?r=invoice/bills/get-for-num',{ yearid : yearid, consoleid : consoleid }, function(data){ 
     alert(data); 
     var data = $.parseJSON(data); 
     var getNum = data; 
     $('#bills-num').val(getNum); 
     }); 

    } ; 

}); 


JS; 
$this->registerJs($script); 
/* end getting the num */ 
?> 

そして、私は希望の値を取得していますが、テキストボックスに表示されないです - 私は以下のようにJavaScriptコードを変更しました。今はとても近いです。助けてください。 下のスクリーンショット enter image description here

+0

を確認してください、私はit.Butは何にはに取得していないお読みください。もう少しお手伝いください。 – Tanmay

+0

は 'parseJSON'から' data'を表示するか、 '$( '#bills-num').val(data.num)'を試してください。 –

答えて

1
$('#bills-num').val(getNum["num"]); 
+0

これは疑問に答えるかもしれませんが、ここで何が起こっているのかを人々が理解できるように説明をお願いします。 – Randy

関連する問題