2011-08-23 14 views
5

Estoy desarrollando una aplicación usando Rails y jQuery. Me gustaría enviar un valor entero de identificación a través de un formulario de entrada, pero aún mostrar un valor de texto amigable para el usuario mientras está completando el formulario. El campo de entrada de texto está utilizando el autocompletado de jQuery, por lo tanto, una vez que el usuario elige una entrada, se ingresará un valor entero en el campo de entrada. ¿Hay alguna forma de mostrar un valor diferente de lo que realmente se envía?entrada [tipo = texto] enviar un valor diferente al mostrado

+0

¿Qué hay de mover la parte que determina cuál es el número del texto a los rieles? – Dani

+0

Podría hacerlo, pero realmente quiero mantener mi controlador lo más limpio posible. Además, tengo múltiples casos de esto (formulario grande), así que tendría que agregar un poco de código personalizado en el controlador. Me pregunto si hay algún complemento preinstalado o una forma de hacerlo. Si no, supongo que terminaré poniéndolo en el controlador. – Pogopuschel

+0

solía ser capaz de hacer cosas como esta en acción actionscript en datagrids) – SuperUberDuper

Respuesta

1

Trate de usar la funcionalidad de cuadro combinado para la interfaz de usuario jQuery Autocompletar:

http://jqueryui.com/demos/autocomplete/#combobox

El atributo de valor de las opciones son las que son enviadas junto con el formulario, no el texto de la pantalla.

+0

¡Oh, pasé por alto el ejemplo del combobox! ¡Gracias! – Pogopuschel

+0

¿Hay alguna forma de hacerlo sin agregar un cuadro desplegable y solo tener ese cuadro de texto? – lynnyi

+0

@lynnyi y ¿dónde mostrarías las opciones de autocompletado? –

0

Puede utilizar

$('myform').submit(function() { /* your thing here */ }); 

Y lo suyo va a ejecutar cuando el usuario envía.

+0

Gracias, lo entiendo. Pero eso significa que todavía necesito hacer un montón de trabajo manual haciendo un seguimiento y reemplazando todos los valores que deseo modificar. En ese caso, podría ponerlo en el controlador, que sería una solución mucho más limpia. ¿O estoy pasando por alto algo? – Pogopuschel

1

Entiendo lo que quiere hacer. He hecho lo mismo para un menú desplegable. ¡Nunca lo intenté para un cuadro de texto! :( Lo que hice fue que el nombre desplegable mostraba las entradas en la base de datos y cuando el usuario envía el formulario, se pasa el ID en la base de datos. Espero que eso sea exactamente lo que desea estoy poniendo el código de la misma a continuación sé que esto no es lo que busca pero puede dar una pista

En la vista:.!

<% = f.select: facilitator_group_id, FacilitatorGroup.all.map {| fg | [fg.name, fg.id]}%>

FacilitatotGroup es el nombre de mi modelo.

¡Salud!

Hola. También creo que el motivo por el que usamos el campo de texto es para que el usuario ingrese los datos que desea almacenar en la base de datos. Por su razón, ¿por qué no puede usar un menú desplegable?

+0

Tu código solo funciona para un menú desplegable. Las etiquetas de opciones tienen una propiedad de texto y valor, y los cuadros de texto no. No puedo usar un menú desplegable porque estoy usando el autocompletado de jQuery. – Pogopuschel

1

Como alternativa, también puede mantener un campo de entrada oculto y usar un evento "cambiar" para mantener el campo de entrada oculto actualizado cada vez que el usuario cambie el campo original.

Cuestiones relacionadas