Perder el foco un textField

Mi intención es que cuando alguien introduzca un número en un textField por ejemplo "500" y al perder este textField el foco ese numero(500) se pase a una función “ConvertirNroALetras(Nro)” (que a propósito la función ya la tengo, ese no es mi problema) y se escriba el resultado, obtenido de la función, en otro textField mostrando el numero(500) escrito en letras (“quinientos”) (que es lo que hace la función).

El Escenario completo es este tengo una tabla "t_recibo" con los siguientes atributos “idt_recibo” (primary key), “recibo_bs”(“bs” es la divisa, en lugar de “dólar” es “bs” moneda de mi país), “recibo_concepto”, “recibo_tipo”, “recibo_la_suma_de “ (si nos damos cuenta cada atributo o campo empieza con "recibo" que es para indicar que pertenece a la tabla "t_recibo" simplemente).

Por donde empiezo, utilizo el evento “onBlur”? y donde o cómo?

Porque en mi “vista” o el archivo “_form.php” esta esto:

código:


<div class="row">


	<?php echo $form->labelEx($model,'recibo_bs'); ?>


	<?php echo $form->textField($model,'recibo_bs',array('size'=>60,'maxlength'=>100)); ?>


	<?php echo $form->error($model,'recibo_bs'); ?>


</div>





<div class="row">


	<?php echo $form->labelEx($model,'recibo_concepto'); ?>


	<?php echo $form->textField($model,'recibo_concepto',array('size'=>60,'maxlength'=>100)); ?>


	<?php echo $form->error($model,'recibo_concepto'); ?>


</div>





<div class="row">


	<?php echo $form->labelEx($model,'recibo_tipo'); ?>


	<?php echo $form->dropDownList($model,'recibo_tipo', $model->getTypeOptions()); ?>


	<!-- <?php echo $form->textField($model,'recibo_tipo',array('size'=>10,'maxlength'=>10)); ?> -->


	<?php echo $form->error($model,'recibo_tipo'); ?>


</div>





<div class="row">


	<?php echo $form->labelEx($model,'recibo_la_suma_de'); ?>


	<?php echo $form->textField($model,'recibo_la_suma_de',array('size'=>60,'maxlength'=>100)); ?>


	<?php echo $form->error($model,'recibo_la_suma_de'); ?>


</div>

Como hago entonces para lograr mi objetivo, como trabajo, ¿en el “controlador”(ReciboController.php) o en la “vista”(_form.php) o en el “modelo”(Recibo.php) del proyecto?

Yo estaba probando con en la “vista” con el método “onBlur” (que es cuando pierde el foco) lo siguiente:

código:


<div class="row">


	<?php echo $form->labelEx($model,'recibo_bs'); ?>


	<?php echo $form->textField($model,'recibo_bs', array('onBlur'=>$model->FuncionX())); ?>


	<?php echo $form->error($model,'recibo_bs'); ?>


</div>

Pero no sé que poner en la “FuncionX” y donde la escribo en la “vista” o “modelo”, porque en realidad lo que debería hacer esa función es obtener el valor del textField del “recibo_bs” que sería un valor numeral como “555” y mandarlo a la función “ConvertirNroALetras(valor)” la cual esa función ya la tengo y el resultado obtenido de esa función la escribiría en el textField del “recibo_la_suma_de”.

Entonces mi pregunta sería que pongo en la “FunciónX” que invoca el “onBlur“? en caso de que esa sea la forma correcta, porque quizás estoy mal y exista otra forma de hacerlo lo que quiero conseguir.

Espero su colaboración.

Si la función está escrita en PHP entonces no te sirve lo que estás haciendo, pues el llamado a la función se estaría haciendo en tiempo de ejecución (al cargar la página) y no cada vez que el usuario pierde el foco del campo de texto. Para eso necesitas javascript.

Para solucionarlo tienes dos opciones:

[list=1][]Pasar tu función a javascript y la adjuntas a la vista, lo que te permitiría invocarla en el onBlur del input.[]Crear una función ajax (usando jQuery por ejemplo) para que, al ocurrir la pérdida de foco, ésta función ejecute una solicitud al servidor enviando como parámetro el valor del campo input. Dicha solicitud la capturas en la acción de algún controlador a elección (puede ser el mismo controlador que estás usando para mostrar la vista) y procesas el parámetro con la función que mencionas. Luego, asignas a la propiedad "value" del input el valor devuelto por la acción.[/list]Acá hay un ejemplo de como se puede usar Yii para definir una función ajax en un input:

http://www.yiiframework.com/wiki/24/

Gracias querido Mauricio me sirvió la primera opción que me hicistes y mi función es la siguiente por si a alguien le sirve:

Código en la vista "_form.php"


<script type="text/javascript">


	$(document).ready(function FuncionPrueba(){


		$('#recibo_bs').blur(function(){


			    var $num = $('#recibo_bs').val();


			    $('#recibo_la_suma_de').val(covertirNumLetras($num));


				});


	});


</script>

Gracias por la información