Tengo un select
campo de formulario que quiero marcar como "solo lectura", ya que el usuario no puede modificar el valor, pero el valor aún se envía con el formulario. El uso del disabled
atributo evita que el usuario cambie el valor, pero no envía el valor con el formulario.
El readonly
atributo solo está disponible para input
y textarea
campos, pero eso es básicamente lo que quiero. ¿Hay alguna manera de hacer que eso funcione?
Dos posibilidades que estoy considerando incluyen:
- En lugar de deshabilitar
select
, deshabilite todos los mensajes de correo electrónicooption
y use CSS para atenuar la selección para que parezca deshabilitada. - Agregue un controlador de eventos de clic al botón de envío para que habilite todos los menús desplegables deshabilitados antes de enviar el formulario.
javascript
html
css
forms
html-select
Marqués Wang
fuente
fuente
trafalmadorian
workest son las mejores. Deshabilita todas las entradas que no están seleccionadas. También funcionaría si selecciona tiene múltiples opciones habilitadas.$('#toSelect')find(':not(:selected)').prop('disabled',true);
Respuestas:
¿Dónde
select_name
está el nombre que normalmente le daría al<select>
.Otra opción.
Ahora con este, he notado que dependiendo del servidor web que esté utilizando, es posible que tenga que poner la
hidden
entrada antes o después del<select>
.Si mi memoria me sirve correctamente, con IIS, lo pones antes, con Apache lo pones después. Como siempre, la prueba es clave.
fuente
Deshabilite los campos y luego habilítelos antes de enviar el formulario:
Código jQuery:
fuente
He estado buscando una solución para esto, y como no encontré una solución en este hilo, hice la mía.
Simple, simplemente desenfoca el campo cuando te enfocas en él, algo así como deshabilitarlo, pero en realidad envías sus datos.
fuente
Me enfrenté a un escenario ligeramente diferente, ya que solo quería no permitir que el usuario cambiara el valor seleccionado en función de un cuadro de selección anterior. Lo que terminé haciendo fue deshabilitar todas las otras opciones no seleccionadas en el cuadro de selección usando
fuente
attr
debería cambiar conprop
, se vería algo así$('#toSelect')find(':not(:selected)').prop('disabled',true);
La misma solución sugerida por Tres sin usar jQuery
Esto podría ayudar a alguien a entender más, pero obviamente es menos flexible que el de jQuery.
fuente
getElementsByTagName('select')
?no funciona con el: selector de entrada para campos seleccionados, use esto:
fuente
Uso el siguiente código para deshabilitar las opciones en las selecciones
fuente
La forma más fácil que encontré fue crear una pequeña función de JavaScript vinculada a su formulario:
y lo llamas en tu formulario aquí:
O puede llamarlo en la función que utiliza para verificar su formulario :)
fuente
Simplemente agregue una línea antes de enviar.
fuente
O use JavaScript para cambiar el nombre de la selección y configurarla como deshabilitada. De esta manera, la selección aún se envía, pero con un nombre que no está marcando.
fuente
Creé un complemento rápido (solo Jquery), que guarda el valor en un campo de datos mientras una entrada está deshabilitada. Esto solo significa que mientras el campo se deshabilite programáticamente mediante jquery usando .prop () o .attr () ... luego acceder al valor mediante .val (), .serialize () o .serializeArra () siempre devolverá el valor incluso si está deshabilitado :)
Enchufe descarado: https://github.com/Jezternz/jq-disabled-inputs
fuente
Basado en la solución de Jordan, creé una función que crea automáticamente una entrada oculta con el mismo nombre y el mismo valor de la selección que desea invalidar. El primer parámetro puede ser un id o un elemento jquery; el segundo es un parámetro opcional booleano donde "verdadero" deshabilita y "falso" habilita la entrada. Si se omite, el segundo parámetro cambia la selección entre "habilitado" y "deshabilitado".
fuente
Encontré una solución viable: eliminar todos los elementos excepto el seleccionado. Luego puede cambiar el estilo a algo que también parezca deshabilitado. Usando jQuery:
fuente
fuente
Otra opción es utilizar el atributo de solo lectura.
Con solo lectura, el valor aún se envía, el campo de entrada aparece atenuado y el usuario no puede editarlo.
Editar:
Citado de http://www.w3.org/TR/html401/interact/forms.html#adef-readonly :
Cuando dice que el elemento puede tener éxito, significa que puede enviarse, como se indica aquí: http://www.w3.org/TR/html401/interact/forms.html#successful-controls
fuente