【问题标题】:Dropdown javascript onload下拉 javascript 加载
【发布时间】:2015-11-17 12:31:33
【问题描述】:

我有一个下拉菜单,它有一个 onchange 功能。执行该功能后,它会更改另一个下拉菜单。 我需要让它执行 onload 脚本。

第一个下拉菜单:

echo $form->field($model, 'company_id')->dropDownList($items_company, ['prompt' => 'Select Company', 'style' => 'width:400px;', 'onchange' => '
            $.post("index.php?r=project/lists&id=' . '"+$(this).val(), function( data ) {
            $( "select#project-client" ).html( data );
            console.log("On change");
            console.log(data);
            });

        ',])->label('Company');

第二个下拉菜单:

echo '<label class="control-label">Company Client</label>';
echo Select2::widget([
'model' => $model,
'attribute' => 'client',
'theme' => Select2::THEME_BOOTSTRAP,
'options' => [ 'label' => 'Client',
    'multiple' => true, 'style' => 'width:400px;', 'overwriteInitial' => true],
'pluginOptions' => [
    'disabled' => false,
],
]);

这是我尝试过的:

$(document).ready(function () {
    var currentProjectCompany = $('#project-company_id').val();
    $.post("index.php?r=project/lists&id=' . '" + currentProjectCompany, function (data) {
        $("select#project-client").html(data);
        console.log("Company ID:");
        console.log(currentProjectCompany);
        console.log("Clients");
        console.log(data);
    });
});

【问题讨论】:

    标签: javascript jquery html drop-down-menu yii2


    【解决方案1】:

    将 onchange 代码移动到它自己的函数中(它应该在那里),并在 ready() 函数中执行该函数。

    这样它会同时触发 onchange 和 onload。

    【讨论】:

    • 我试过这样:&lt;script&gt; $('#project-company_id').change(function () { $.post("index.php?r=project/lists&amp;id=' . '" +$(this).val(), function (data) { $("select#name").html(data); }); }); &lt;/script&gt; 不起作用。
    • 我不是这么说的。独立函数在哪里,你在哪里称它为onready?这真的不是火箭科学。
    【解决方案2】:

    我同样检查我的代码,它可能对你有帮助。但我使用 ajax 和 jquery。

    对于第一个下拉菜单。

    echo $form->dropDownListGroup(
                        $model 'id', array(
                    'wrapperHtmlOptions' => array(),
                    'widgetOptions' => array(
                        'data' => abc::getName($model->id),
                        'htmlOptions' => array(
                            'prompt' => 'Select Project',
                            'ajax' => array(
                                    'type' => 'POST',
                                    'url' =>  ( Yii::app()->createUrl('/' . $domain_name . '/qq/xyz/abc') ),
                                    'update' => '#seconddropdownid',
                                    //'dataType' => 'json',
                                    'data'=>array('id'=>'js:this.value'),
    
                                  )
                                ),
                            ),
                  )
                );
    

    在第二个下拉列表中:

     echo $form->dropDownListGroup(
                    $project, 'tag', array(
                'wrapperHtmlOptions' => array(),
                'widgetOptions' => array(
                    'data' =>$this->getProjectTags(),
                    'htmlOptions' => array(
                        'prompt' => 'Select Tags',
                    ),
                )
                    )
            );
    

    在更改第二个列表时,您可以更新 yii 的列表视图。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-02-04
      • 1970-01-01
      • 2013-01-20
      • 2013-05-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-12-22
      相关资源
      最近更新 更多