enviar contenido de un zii.widgets.jui.CJuiAutoComplete

Estoy usando un CJuiAutoComplete y me funciona bien, pero quiero que mientras me vayan saliendo los resultados en el componente, mandar los mismos para otro componente, por ejemplo imaginense un directorio donde en el componente CJuiAutoComplete voy a ir escribiendo el nombre de la persona y mientras lo hago necesito que debajo me vayan saliendo las fotos de todas las personas que tengan en su nombre las letras que voy escribiendo :blink:

Suena interesante aunque parece mas un tema de javascript y no del framework como tal…

Te dare una idea de como se podria hacer… en realidad nunca lo he intentado, pero no parece dififil…

Implementando el evento focus del componente, puedes lograr que al navegar por los resultados con las flechas direccionales se envie una peticion via ajax y que el resultado lo deje en alguna parte del dom de tu documento… por ej.




'focus'=>"js:function(event,ui){

	$.ajax({

		url:'".$this->createUrl('controller/searchImages')."',

		data: {

			term: $(this).val()

		},

		success:function(result){

			$('#output').html(result);

		}

	});

}",



Es una idea que creo que puede funcionar…

Bueno el yii me da el siguiente error :


CException

Description

Property "CJuiAutoComplete.focus" is not defined.


asi lo puse en mi codigo

$this->widget(‘zii.widgets.jui.CJuiAutoComplete’, array(

'name'=>'city',


'source'=>array('pavel', 'angel', 'yoannis'),


'focus'=>"js:function(event,ui){


    $.ajax({


            url:'".$this->createUrl('user/prueba2')."',


            data: {


                    term: $(this).val()


            },


            success:function(result){


                    $('#output').html(result);


            }


    });


 }",


// additional javascript options for the autocomplete plugin


'options'=>array(


    'showAnim'=>'fold',


),


'htmlOptions'=>array(


    'style'=>'height:20px;'


),

));

Eso ocurre porque el evento focus es parte de las opciones del componente… no lo puedes utilizar como una propiedad…

Probe el evento focus con el codigo de abajo, pero este evento solo se dispara cuando me paro sobre alguna propuesta de las que me va haciendo el componente, y no mientras voy pulsando las letras letras sobre el mismo que supongo deber el eveto KeyDown, pero en vez de focus, pongo keydown y no hace nada.




$this->widget('zii.widgets.jui.CJuiAutoComplete', array(

    'name'=>'city',

    'source'=>array('pavel', 'angel', 'yoannis'),

   

    // additional javascript options for the autocomplete plugin

    'options'=>array(

        //'showAnim'=>'fold',

         'focus'=>"js:function(){

			 alert(1);

       

     }",

    ),

    'htmlOptions'=>array(

        'style'=>'height:20px;'

    ),

));

Entonces el evento q necesitas es el search … cambia de focus a search y utiliza el mismo codigo

Ahora tengo un problema, ya me va mostrando mientras voy escribiendo, pero cuando le doy click a una de las posibles sugerencias que saca el componente, no me muestra la palabra completa solo lo que habia escrito hasta el momento, por ejemplo:

si habia escrito hasta el momento la cadena “pav” y el componente me da sugerencia “pavel” cuando le doy click a “pavel” me sigue mostrando “pav”, tambien cuando voy borrando lo que habia escrito cuando me queda 1 caracter no me manda nada para la accion donde proceso lo que mando en term por lo que me sigue mostrando en el div donde muestro la cadena el primer caracter en este caso la ‘p’.


$this->widget('zii.widgets.jui.CJuiAutoComplete', array(

    'name'=>'city',

    'source'=>array('pavel', 'angel', 'yoannis'),

  

    // additional javascript options for the autocomplete plugin

    'options'=>array(

        'showAnim'=>'fold',

        'search'=>"js:function(event,ui){

         $.ajax({

                type: 'POST',

                url:'".$this->createUrl('Site/Filt')."',

                data: {

                        term: $(this).val()

                      },

                success:function(result){

                       $('#output').html(result);

                }

        });

}",

    ),

    'htmlOptions'=>array(

        'style'=>'height:18px;'

    ),

));


?>

</div>

<div id="output"></div>

accion en la controladora site


public function actionFilt()

	{

		if (isset($_POST['term']))			

			echo json_encode($_POST['term']);

		 

		

	}

Bueno, ahora para q aparezca el item seleccionado en el textbox tienes q implementar el evento select del componente… y eso de que con 1 solo caracter no hace la busqueda es porq hay una propiedad desde la cual le dices al componente a partir de cuantos caracteres debe empezar a realizar la busqueda… Todas estas cosas q te digo salen en la ayuda del jquery.ui autocomplete