0

ウィジェット JMultiSelect を使用しましたが、ajax ボタン (ajax リクエスト) を押すと、選択した値がコントローラーに送信されます。リクエストの「データ」に値が追加されることを希望します。

これは私のウィジェットです:

$this->beginWidget('CActiveForm', array(
     'id' => 'Music'
));

$this->widget('ext.multiselect.JMultiSelect', array (
     'id'=>'MusicName',
     'name'=>'Music',
     'data' => $music,
     'options'=> array('header'=>'Select a music file', 'noneSelectedText'=>'Select a music file', 'multiple'=>false),
));

$this->endWidget();

私はこのようなことを試しました:

echo CHtml::ajaxLink(
      'Test request',
      array('video/createVideo'),
      array(  
         'update'=>'#req_res',
         'data'=> array(
                      'musicFile'=>'js:function(){
                            return document.getElementById("Music").value;
                       }',
          ),                                                    
         'type' => 'post',
      )
);

解決策を見つけましたが、今ではテキストの代わりに値があります:

'musicFile'=>'js:function(){
                                                                    return $("#MusicName").multiselect("getChecked").map(function(){
                                                                    return this.value;    
                                                                }).get();
                                                            }',
4

2 に答える 2

0

ajaxのデータ部分でJs関数を直接使用して、このようなことをしてみてください

$this->widget('ext.multiselect.JMultiSelect', array (
                                            'name'=>'Music',
                                            'data' =>array( 
                                            "urVariableName" = "js: $('#music').val();"
                                           ),
                                            'options'=> array('header'=>'Select a music file', 'noneSelectedText'=>'Select a music file', 'multiple'=>false),
                                    ));

コントローラーでデータを取得するには、示されているように POST または GET を使用します

$variable=$_POST['urVariableName'];

示されているように Ajax ボタンを使用してみてください

echo CHtml::ajaxButton(
      'Test request',
      array('video/createVideo'),
      array(  
         'update'=>'#req_res',
         'data'=> array(
                      'musicFile'=>"js: $('#music').val();"
                      }',
          ),                                                    
         'type' => 'post',
      )
);
于 2013-06-04T11:44:50.053 に答える
0

示されているように、JMultiSelect で「select」属性を使用してみてください。

$this->widget('ext.multiselect.JMultiSelect', array (
     'name'=>'Music',
     'data' => $music,
     'select'=>'js:function( event, ui ) {
                                            // $("#my_keyword_id").val(ui.item.id);
                                             alert($("#music").val());
                                                }',
     'options'=> array('header'=>'Select a music file', 'noneSelectedText'=>'Select a music file', 'multiple'=>false),
));
于 2013-06-04T13:42:13.277 に答える