2012-03-11 37 views
7

Estoy tratando de obtener un área de texto input y un botón submit adjunto a la derecha de la misma. Idealmente, los dos juntos usarán el 100% del ancho y estarán uno al lado del otro.JQuery Mobile: coloque un botón de entrada junto a un área de texto de entrada

He estado tratando de jugar con ui-grid-a y opciones similares, pero todo falla miserablemente. Puede ver algunos intentos there. Todos son igualmente feos, pero lo más complicado es unir los dos elementos uno con un ancho fijo (el botón) y otro que debe tomar el resto del ancho (por lo tanto, ni fijo ni un porcentaje).

¿Tiene alguna idea de cómo hacer esto correctamente?

En un jQuery mundo de los sueños tendría alguna función incorporada para agrupar esos controles (al igual que <fieldset data-role="controlgroup" data-type="horizontal" data-role="fieldcontain"> para agrupar las casillas de verificación. Pero no lo parece.

Gracias mucho por su ayuda,

Mad

Respuesta

1

Encontré una nueva respuesta para aquellos de ustedes que están viendo este hilo.

Lo encuentro mucho mejor en términos de integración con jQuery Mobile. Sin embargo, podría ser vulnerable a las actualizaciones en jQuery Mobile, ya que depende de cómo esté organizado el archivo de imagen del icono.

simplemente he añadido esta regla CSS:

.ui-icon-searchfield:after {background-position: -252px !important;} 

y el icono mágicamente se convierte en un data-icon="check". ¡Exactamente lo que estaba buscando! Puede elegir el icono que desee cambiando el desplazamiento y mirando en images/icons-18-white.png para la asignación de iconos.

Por supuesto, querrá refinar el selector para que solo oriente los cuadros de entrada que desea cambiar.

Disfruta el truco.

0

Después de una discusión fructífera con adamdehaven, resulta que:

botón
  • una validación es la mayor parte del tiempo innecesario y en contra la lógica de las aplicaciones móviles. Es mejor utilizar <input type="search" /> para tales problemas
  • El marco no permite personalizar el icono para el contenido type="search".

Para hacer esto último, armé un hack feo que puedes ver there. A menos que amplíe bastante, no verá una diferencia con el type="search" normal además del gris oscuro. Sin embargo, sospecho que esta solución podría ser vulnerable a cambios menores en el marco en el futuro.

Otra solución sería sacar directamente el icono y sobreponer manualmente un botón de icono hecho en casa sobre el input. Debería ser un poco más robusto (porque al menos el botón no se basaría en el marco) pero requiere algunos cambios rápidos en el photoshop para extraer el ícono y colocarlo en un archivo apropiado.

+0

he encontrado otra solución que Publiqué más tarde. Consulte y elija el que mejor funcione para usted. –

2

la forma en que resolví este problema fue hacer flotar el cuadro de entrada al lado del botón, luego tener pagebeforeshow establecer el tamaño del cuadro de entrada al ancho de la ventana menos el tamaño del botón.

+0

¿Este enfoque maneja a un usuario inclinando su dispositivo y cambiando la relación de aspecto? ¿Qué tal el redimensionamiento de una ventana? – veeTrain

+0

Si está utilizando la función de teléfono, etc., haga que vuelva a ejecutar la función de dimensionamiento cuando el dispositivo esté inclinado. También podría simplemente configurar todo como porcentajes. Para el cambio del tamaño de la ventana, creo que podrías hacer algo similar en jquery para detectar cuándo cambia el tamaño de la ventana, pero todavía no he tenido que abordar este problema específico. – mike029

12

oculto dentro de jQuery Mobile own documentation me encontré con un enfoque que funcionaba bien para mi cuadro de búsqueda + botón de búsqueda aplicación.

En esa página, están comparando cosas una al lado de la otra usando un diseño simple de <table> que me inspiró a confiar en esto también. Si bien las tablas NO son el recurso de referencia para hacer bien el diseño/diseño, es extremadamente efectivo, simple y elude muchas de las molestias de las soluciones provisionales que estoy viendo aquí. Esto es lo que mi enfoque puede hacer por su jsfiddle you linked. Ver la cuarta iteración.

En otras palabras, debido a la complicada naturaleza de cómo se construye una página jQuery Mobile, añade en divs y un estilo que no están en su margen de beneficio, etc., esto podría ser su mejor opción para este escenario particular:

  • Querer dos columnas de elementos donde la segunda columna tiene un ancho fijo.
  • Donde la primera columna se expande para llenar el ancho de la pantalla al cambiar el tamaño.
  • Donde quiera que los elementos abarquen todo el ancho del dispositivo.

(Cabe destacar que, si se quería modificar cualquiera de estos aspectos particulares, algo de relleno CSS simple o alineación debe hacer el truco a partir de esta solución base)

<table style='width:100%'><tr> 
    <td> 
     <input type='text' (or type='search') /> 
    </td> 
    <td style='font-size:80%; width:7em'> 
     <input type='submit' value='Submit' /> 
    </td> 
</tr></table> 

Obviamente, debe name y darle un id a estos artículos si desea publicarlos en algún lugar o manipularlos en javascript. Espero que esto sea útil para otra persona que no se deje intimidar por la naturaleza de <table> s. No he podido ver una desventaja de este enfoque utilizando la interfaz/temática simple de jQuery Mobile.

Por último, es posible que desee detenerse y preguntarse si es necesario un botón de envío. En los dispositivos móviles como el safari móvil, hay un botón en el teclado con la etiqueta "Ir" cada vez que se interactúa con los elementos de entrada del formulario. Esto funciona igual que una tecla de retorno y puede enviar el término de búsqueda. No he investigado esta opción en otros navegadores en este momento.

(Esto no es una solución para rivalizar con su enfoque para cambiar el icono del cuadro de búsqueda. Eso es muy inteligente, pero no parece ser lo que su pregunta original estaba a punto.)

+1

¡Gracias por su sugerencia! Es cierto que a veces una buena "mesa" puede ahorrarnos muchas molestias. Sé que mis soluciones se alejaron un poco de mi objetivo inicial cuando me di cuenta de que este tipo de botón de entrada de lado a lado no estaba realmente en línea con la filosofía de jquery mobile. –

+0

No hay problema Mad Echet; gracias por publicar la misma pregunta que estaba teniendo.Todo el marco parece opuesto a plantearlo de esta manera; y creo que la columna/'ui-grid-a' es muy engorrosa. ¿Terminaste eliminando el botón? – veeTrain

Cuestiones relacionadas