Ciao a tutti, ho un problema per metà.
Utilizzo bootstrap e ho creato due drop down list, dove la seconda è dinamica.
il codice che crea tutto nella view è questo:
echo CHtml::dropDownList('from','',
array(Landing::model()->placeFrom()),
array(
'encode'=>false,
'data-width'=>'49%',
'data-size'=>'6',
'prompt'=>'From..',
'class'=>'selectpicker',
'ajax' => array(
'type'=>'POST',
'url'=>CController::createUrl('loadcities'),
'update'=>'#to',
'data'=>array('from_id'=>'js:this.value'),
)
));
La prima lista la si vede perfettamente, mentre la seconda lista viene creata in questo modo
echo CHtml::dropDownList('to_id','', array(),
array(
'encode'=>false,
'data-width'=>'50%',
'data-size'=>'6',
'prompt'=>'To..',
'class'=>'selectpicker',
));
Mi crea il secondo drop down list naturalmente vuoto, e fin qui ci siamo.
ora testando nel browser, la seconda lista pare non riempirsi, invece è falso.
cosa succede?
ho scoperto questo:
<select id="to" class="selectpicker" data-size="6" data-width="50%" style="display: none;">
<optgroup label="Mountain" data-icon="">
<option data-subtext="Italy">
Ponte di Legno
</option>
</optgroup>
</select>
<div class="btn-group bootstrap-select" style="width: 50%;">
<button class="btn dropdown-toggle" data-toggle="dropdown" type="button" data-id="to"> … </button>
<ul class="dropdown-menu" role="menu">
<li class="selected" rel="0">
<a class="" tabindex="0"><span class="text"> … </span><i class="icon-ok check-mark"></i>
...............
In pratica mi riempe una select in alto ma non la lista e quindi non risulta visibile.
il codice jquery che mi viene generato dal sistema è corretto e lo condivido
<script type="text/javascript">
/*<![CDATA[*/
jQuery(function($) {
jQuery('body').on('change','#from',function(){jQuery.ajax({'type':'POST','url':'/site/landing/loadcities','data':{'from_id':this.value},'cache':false,'success':function(html){jQuery("#to").html(html)}});return false;});
});
/*]]>*/
</script>
Perché si prende gioco di me? come potrei risolvere?
grazie a tutti e spero che qualcuno di voi possa aiutarmi che sono due giorni che ci perdo tempo.