2014-01-21 4 views
0

Я видел this wiki, где они заполняют выпадающий список городов, в зависимости от значения других dropdownlists, которые содержат страны, используя вызов ajax с опцией обновления. Мне нужно реализовать что-то подобное, но мой DropDownList зависит от двух DropDownLists:Yii dropdownlist в зависимости от двух dropdownlists

<div class="row"> 
    <?php echo CHtml::label('Countries', 'country_id'); ?> 
    <?php echo CHtml::dropdownlist('country_id', '',$countries); ?> 
</div> 

<div class="row"> 
    <?php echo $form->labelEx($model,'globaladmin'); ?> 
    <?php echo $form->dropDownList($model,'globaladmin',User::itemAlias('AdminStatus')); ?> 
    <?php echo $form->error($model,'globaladmin'); ?> 
</div> 

Пользователь должен выбрать страну, а затем только если во втором списке «Нет» выбран, новые выпадающие списки должны быть заселены с информацией о городах (как в примере с вики).

Как я уже сказал, это похоже на пример, но новое выпадающее меню зависит от двух значений (идентификатор контура, выбранного в первом списке, и если во втором выбран «Нет»). Как я могу это решить?

EDIT: Объясняя немного больше

В примере, страна выпадающий, которая содержит вызов Ajax, как:

echo CHtml::dropDownList('country_id','', array(1=>'USA',2=>'France',3=>'Japan'), 
array(
'ajax' => array(
'type'=>'POST', //request type 
'url'=>CController::createUrl('currentController/dynamiccities'), //url to call. 
'update'=>'#city_id', //selector to update 
))); 

я не могу определить такой AJAX вызова в моих country , потому что я должен ждать значение второго dropbox. Только в том случае, если в этом списке выбрано «Нет», будет выполнен ajax (и заполненный и отображаемый раскрывающийся список). Если выбрано «Да», выпадающий список city должен быть скрыт.

+0

Я не понимаю, где проблема. Разве вы не можете добавить свои первые и второй значения выпадающего списка в свой третий запрос ajax? –

+0

@AliMasudianPour Если вы видите пример, вызов ajax, который заполняет раскрывающийся список 'city', относится к выпадающему списку' country'. Здесь я не могу этого сделать, потому что мне нужно значение раскрывающегося списка «globaladmin». – jeanc

ответ

2

Просто добавьте идентификатор к вашему globaladmin упасть вниз, а затем сделать, как показано ниже:

$("#THE ID YOU HAVE SET").on('change',function(){ 
    // You can use $(this).val() 
    // and send it via an ajax request into your own url 
    var valueOfMyGlobalAdminDropDown=$(this).val(); 
    if(valueOfMyGlobalAdminDropDown=="yes"){ 
     //DO SOMETHING 
    }else{ 
     //DO SOMETHING ELSE 
    } 
}); 

он также настоятельно рекомендуется использовать JQuery вживую (в JQuery версии -1.7) или JQuery ON (в JQuery версии + 1.7), чтобы сохранить вашу страницу в запросах ajax.

+0

О, я понял вашу идею! Просто используйте обычный jQuery ajax-вызов вместо Yii-встроенного, правильно? – jeanc

+1

Да, правильно. В моей личной точке зрения, при использовании Yii, чаще всего это лучше использовать ajax по-другому, а не по умолчанию для ajax по умолчанию Yii :) –

Смежные вопросы