Yii Framework Forum: Mostrar En Textfield Valor Seleccionado - Yii Framework Forum

Jump to content

Page 1 of 1
  • You cannot start a new topic
  • You cannot reply to this topic

Mostrar En Textfield Valor Seleccionado Rate Topic: -----

#1 User is offline   Siobeth 

  • Junior Member
  • Pip
  • Yii
  • Group: Members
  • Posts: 27
  • Joined: 14-June 13

Posted 31 July 2013 - 09:49 AM

Buenos Dias Comunidad!! espero me puedan ayudar.. Tengo un combo y deseo que el usuario al seleccionar me muestre automaticamente el valor de la opcion seleccionada en un textfield... Muchos me dicen que con Js puedo hacerlo pero la idea es saber como obtener y mostrar este valor utilizando las herramientas de yii... Es posible esto??.. Gracias de antemano..
0

#2 User is offline   MoriPR 

  • Junior Member
  • Pip
  • Yii
  • Group: Members
  • Posts: 31
  • Joined: 18-July 13

Posted 31 July 2013 - 12:58 PM

Soy un noob y me parece que la semana pasada encontre varias situaciones como esas ed hecho te busco un video en youtube que es este Video El video habla sobre multiples drop down list pero es la misma idea que necesitas. Al hacerlo con Yii lo que harias seria crear el mismo Javascript y sinceramente desconosco como hacerlo (se que tiene que ver con llamar un htmloption en el php que genera el campo). Así que la idea es la siguiente:

$('#dropDownListID').change(function() {
  
  var valor = $('#dropDownListID').val();
  
  $('#textFieldID').val(valor);
});


Por lo menos el javascript funciona de maraviilla y le puedes dar copy pate. Para conocer el ID de dropDownList pues yo fui al Inspect Element de mi navegador pero me he dado cuenta que el ID de los campos tiende a ser el siguiente

id="Modelo_campo"


Repitiendo, ten en mente que necesitas usar javascript aunque lo estes llamando desde una función de Yii ya que PHP corre del lado del servidor y estarias refrescando la página para lo que vas a hacer. Javascript corre en el lado cliente, o sea en el navegador por ende la página no necesita refrescar para desplegar el valor.

espero que te ayude
1

#3 User is offline   Juan D. 

  • Junior Member
  • Pip
  • Yii
  • Group: Members
  • Posts: 27
  • Joined: 30-April 13

Posted 01 August 2013 - 07:33 AM

Como dice MoriPR, si quieres capturar el valor del select por medio de PHP, tendrás que tener en cuenta que al ser un lenguaje del lado del servidor se refrecará el navegador; ahora bien, Yii cuenta con una librería para hacer mucho más fácil el manejo de Javascript, JQuery, Yii automáticamente importa la librería, así que tan solo queda especificar el bloque de código que MoriPR compartió dentro del siguiente método disponible en Yii.

Yii::app()->clientScript->registerScript('Capturar',"

$('#dropDownListID').change(function() {
  
  var valor = $('#dropDownListID').val();
  
  $('#textFieldID').val(valor);
});

");


El método registerScript puede recibir tres parámetros, (id, script y lugar de inserción).

El lugar de inserción podría ser en la cabeza, en el cuerpo, etc... ejemplo: CClientScript::POS_HEAD, este haría la inserción en el head.

Más información al respecto en este enlace: CClientScript

Espero te sirva, feliz día
1

#4 User is offline   MoriPR 

  • Junior Member
  • Pip
  • Yii
  • Group: Members
  • Posts: 31
  • Joined: 18-July 13

Posted 01 August 2013 - 07:51 AM

View PostJuan D., on 01 August 2013 - 07:33 AM, said:

Como dice MoriPR, si quieres capturar el valor del select por medio de PHP, tendrás que tener en cuenta que al ser un lenguaje del lado del servidor se refrecará el navegador; ahora bien, Yii cuenta con una librería para hacer mucho más fácil el manejo de Javascript, JQuery, Yii automáticamente importa la librería, así que tan solo queda especificar el bloque de código que MoriPR compartió dentro del siguiente método disponible en Yii.

Yii::app()->clientScript->registerScript('Capturar',"

$('#dropDownListID').change(function() {
  
  var valor = $('#dropDownListID').val();
  
  $('#textFieldID').val(valor);
});

");


El método registerScript puede recibir tres parámetros, (id, script y lugar de inserción).

El lugar de inserción podría ser en la cabeza, en el cuerpo, etc... ejemplo: CClientScript::POS_HEAD, este haría la inserción en el head.

Más información al respecto en este enlace: CClientScript

Espero te sirva, feliz día



Eso era lo que no me acordaba :-)
0

#5 User is offline   Siobeth 

  • Junior Member
  • Pip
  • Yii
  • Group: Members
  • Posts: 27
  • Joined: 14-June 13

Posted 01 August 2013 - 08:08 AM

Buenos Dias!! Gracias a ambos por la respuesta.. Efectivamente he visto muchos codigos en JavaScript funcionales para esta accion.. Pero al hacerlo de ésa manera se me complica un poco para lo que realmente necesito.. El video que muestra de los combos dependientes ese código lo tengo aplicado al sistema de hecho de alli es que tengo esa duda y he intendado adaptar ese código pero en ves de llenarme otro combo me muestre el valor en un textfield y todo el proceso lo hace en el controlador(Sin JavaScript).. Ahora porque se me complica con el JavaScript, porque el textfield va a generar un código automático que va a depender de la selección del combo1, es decir, no solo va a mostrar el valor del combo1 sino que el codigo estaría compuesto por: valordelcombo1 + valordelcombo2(este es seleccionado previamente) + numerocorrelativo + añoactual, (00-00-00-0000), según la acción que seleccione en el combo1 + el combo2, el va a realizar una busqueda en la tabla de los registros existentes q comiencen con esos valores para asi generar el numero correlativo y agregarle el año actual...
Tengo visualizado el ciclo de cómo hacerlo(En el Controlador), lo que no se es como mandar todo ese codigo ya armado al textfield... Espero haberme explicado :( .. Cualquier sugerencia seria buena!!!.. Gracias!!
0

#6 User is offline   Siobeth 

  • Junior Member
  • Pip
  • Yii
  • Group: Members
  • Posts: 27
  • Joined: 14-June 13

Posted 01 August 2013 - 10:00 AM

Dicen que el persevera vence jejejej.. De tanto indagar cai en un foro brasilero donde explicaba cómo hacer ésta acción con Ajax, Json y logre hacer lo que queria.. Aqui esta el codigo para los que los necesite:

En el Form
<?php  echo 'Tipo de Auditoria: <span class="required">*</span> ',
                   $form->dropDownList($model, 'tipo_aud', 
                    CHTML::listData(tipo_aud::model()->findAll(), 'tipo', 'nombre_aud'), array(
                'ajax' => array(
                    'type' => 'POST',
                     'dataType'=>'json',
                    'url'=>CController::createUrl('datos_aud/SelectipoAud'),
                      'success'=>"function(data) {
                         $('#datos_aud_cod_aud').val(data.cod_aud);  
                       }"                 
                ),
                'prompt' => 'Seleccione...','style'=>'width:210px',
                    )               
                 );?>  
           <?php echo $form->error($model, 'tipo_aud'); ?>


En el Controlador
public function actionSelecTipoAud()
       {
           $resultado = $_POST['datos_aud']['tipo_aud'];
         echo CJSON::encode(array('cod_aud'=>$resultado));

       }


De ésta manera me muestra el valor seleccionado en combo en el textfield.. :D ..
0

#7 User is offline   MoriPR 

  • Junior Member
  • Pip
  • Yii
  • Group: Members
  • Posts: 31
  • Joined: 18-July 13

Posted 02 August 2013 - 08:29 AM

View PostSiobeth, on 01 August 2013 - 10:00 AM, said:

Dicen que el persevera vence jejejej.. De tanto indagar cai en un foro brasilero donde explicaba cómo hacer ésta acción con Ajax, Json y logre hacer lo que queria.. Aqui esta el codigo para los que los necesite:

En el Form
<?php  echo 'Tipo de Auditoria: <span class="required">*</span> ',
                   $form->dropDownList($model, 'tipo_aud', 
                    CHTML::listData(tipo_aud::model()->findAll(), 'tipo', 'nombre_aud'), array(
                'ajax' => array(
                    'type' => 'POST',
                     'dataType'=>'json',
                    'url'=>CController::createUrl('datos_aud/SelectipoAud'),
                      'success'=>"function(data) {
                         $('#datos_aud_cod_aud').val(data.cod_aud);  
                       }"                 
                ),
                'prompt' => 'Seleccione...','style'=>'width:210px',
                    )               
                 );?>  
           <?php echo $form->error($model, 'tipo_aud'); ?>


En el Controlador
public function actionSelecTipoAud()
       {
           $resultado = $_POST['datos_aud']['tipo_aud'];
         echo CJSON::encode(array('cod_aud'=>$resultado));

       }


De ésta manera me muestra el valor seleccionado en combo en el textfield.. :D ..


me perdi ne lo que querias hacer hahahaha pero me alegro que lo hayas querido solucionar. La perseverancia alcanza
0

#8 User is offline   intranetyii 

  • Newbie
  • Yii
  • Group: Members
  • Posts: 3
  • Joined: 26-February 14

Posted 27 March 2014 - 12:38 PM

Hola Siobeth
Estoy implementando tu código pero no me muestra nada, me lo podrías explicar a mas detalle mas en la parte de los nombres del nombre del modelo, el controlador y tus campos o enviarme el link del foro de donde te basaste.

Por fa!!!!!!
soy novata en esto de Yii.
0

#9 User is offline   Siobeth 

  • Junior Member
  • Pip
  • Yii
  • Group: Members
  • Posts: 27
  • Joined: 14-June 13

Posted 02 April 2014 - 01:35 PM

Hola.. Espero que no sea tarde la respuesta..
Fijate lo que te indica el codigo es que al seleccionar de un combo automaticamente te muestre el valor en un campo de texto..

El combo se llama tipo_aud,
la vista (form) se llama datos_aud,
la accion en el controlador se llama SelectipoAud,
y cod_aud se llama el textfield donde quieres que muestre el valor seleccionado del combo..

Espero haberme explicado y que te sirva..
0

#10 User is offline   bluyell 

  • Standard Member
  • PipPip
  • Yii
  • Group: Members
  • Posts: 224
  • Joined: 28-October 11

Posted 02 April 2014 - 07:42 PM

me pregunto. por qué es tan complicado y tan laaargo, teniendo que recurrir a un foro brasilero para algo que considero no debe pasar de 5 lineas de código, como te indican arriba, con ajax, cual es el problema con ajax, hoy no hay dispositivo que no soporte JS, no tiene sentido, además, si lo que se quiere es no usar ajax y en cambio usar lo que yii puramente te da entonces solo te servira eso para mostrar el valor seleccionado al recien cargar la página pero obligatoriamente para indicar el cambio al seleccionar un valor diferente necesitarás ajax o en su defecto javascript puro.

insisto, demasiadas olas en un vaso de agua.
0

Share this topic:


Page 1 of 1
  • You cannot start a new topic
  • You cannot reply to this topic

1 User(s) are reading this topic
0 members, 1 guests, 0 anonymous users