Tengo este HTML:
<input type="text" name="textField" />
<input type="submit" value="send" />
¿Cómo puedo hacer algo como esto?
- Cuando el campo de texto está vacío, el envío debe estar deshabilitado (disabled = "disabled").
- Cuando se escribe algo en el campo de texto para eliminar el atributo deshabilitado.
- Si el campo de texto vuelve a estar vacío (el texto se elimina), el botón de envío debe volver a desactivarse.
Intenté algo como esto:
$(document).ready(function(){
$('input[type="submit"]').attr('disabled','disabled');
$('input[type="text"]').change(function(){
if($(this).val != ''){
$('input[type="submit"]').removeAttr('disabled');
}
});
});
... pero no funciona. ¿Algunas ideas?
javascript
jquery
html
forms
kmunky
fuente
fuente
Respuestas:
El problema es que el evento de cambio se dispara solo cuando el foco se aleja de la entrada (por ejemplo, alguien hace clic en la entrada o las pestañas). Intente usar keyup en su lugar:
fuente
input id="loginButton" type="submit" name="Submit" value="Login" disabled>
mostrará un botón deshabilitado con las clases css deshabilitadas.fuente
Esta pregunta tiene 2 años, pero sigue siendo una buena pregunta y fue el primer resultado de Google ... pero todas las respuestas existentes recomiendan configurar y eliminar el atributo HTML (removeAttr ("disabled")) "disabled", que no es El enfoque correcto. Hay mucha confusión con respecto al atributo frente a la propiedad.
HTML
El "deshabilitado" en
<input type="button" disabled>
el marcado se denomina atributo booleano por el W3C .HTML contra DOM
Citar:
https://stackoverflow.com/a/7572855/664132
JQuery
Relacionado:
Pertinente:
Resumen
Para cambiar las [...] propiedades DOM, como el estado [...] deshabilitado de los elementos de formulario, use el método .prop () .
( http://api.jquery.com/attr/ )
En cuanto a la desactivación al cambiar parte de la pregunta: hay un evento llamado "entrada", pero el soporte del navegador es limitado y no es un evento jQuery, por lo que jQuery no lo hará funcionar. El evento de cambio funciona de manera confiable, pero se dispara cuando el elemento pierde el foco. Por lo tanto, uno podría combinar los dos (algunas personas también escuchan keyup y pegar).
Aquí hay un fragmento de código no probado para mostrar lo que quiero decir:
fuente
Para eliminar el uso del atributo deshabilitado,
y para agregar el uso de atributos deshabilitados,
Disfruta :)
fuente
o para nosotros que no nos gusta usar jQ para cada pequeña cosa:
fuente
Eric, su código no parecía funcionar para mí cuando el usuario ingresa el texto y luego elimina todo el texto. Creé otra versión si alguien experimentó el mismo problema. aquí van amigos:
fuente
Funcionará así:
Asegúrese de que haya un atributo 'deshabilitado' en su HTML
fuente
Aquí está la solución para el campo de entrada de archivo .
Para deshabilitar un botón de envío para el campo de archivo cuando no se elige un archivo, habilítelo después de que el usuario elija un archivo para cargar:
HTML:
fuente
También puedes usar algo como esto:
Aquí está el ejemplo en vivo
fuente
Para iniciar sesión en el formulario:
Javascript:
fuente
Si el botón es un botón con estilo jQuery (con .button ()), deberá actualizar el estado del botón para que las clases correctas se agreguen / eliminen una vez que haya eliminado / agregado el atributo deshabilitado.
fuente
Las respuestas anteriores no abordan también la comprobación de eventos de cortar / pegar basados en menús. Debajo está el código que uso para hacer ambas cosas. Tenga en cuenta que la acción realmente ocurre con un tiempo de espera porque los eventos de corte y pasado realmente se disparan antes de que ocurra el cambio, por lo que el tiempo de espera le da un poco de tiempo para que eso suceda.
fuente
Vanilla JS Solution. Funciona para un formulario completo, no solo para una entrada.
En cuestión etiqueta JavaScript seleccionada.
Formulario HTML:
Alguna explicación:
En este código agregamos evento keyup en forma html y en cada pulsación de tecla verificamos todos los campos de entrada. Si al menos un campo de entrada que tenemos está vacío o contiene solo caracteres de espacio, entonces asignamos el valor verdadero a la variable deshabilitada y deshabilitamos el botón de envío.
Si necesita deshabilitar el botón Enviar hasta que se completen todos los campos de entrada requeridos, reemplace:
con:
donde required_inputs ya se ha declarado matriz que contiene solo los campos de entrada obligatorios.
fuente
Simplemente podemos tener si y más. Si se supone que su entrada está vacía, podemos tener
de lo contrario podemos cambiar falso a verdadero
fuente
Inhabilitar:
$('input[type="submit"]').prop('disabled', true);
Habilitar:
$('input[type="submit"]').removeAttr('disabled');
El código de habilitación anterior es más preciso que:
Puedes usar ambos métodos.
fuente
Tuve que trabajar un poco para que esto se adaptara a mi caso de uso.
Tengo un formulario donde todos los campos deben tener un valor antes de enviar.
Esto es lo que hice:
Gracias a todos por sus respuestas aquí.
fuente
Consulte el siguiente código para habilitar o deshabilitar el botón Enviar
fuente
mira este fragmento de mi proyecto
$(this).attr('disabled', 'disabled');
fuente
Se suministran todos los tipos de solución. Así que quiero intentar una solución diferente. Simplemente será más fácil si agrega un
id
atributo en sus campos de entrada.Ahora aquí está tu
jQuery
fuente
Espero que debajo del código ayude a alguien ... !!! :)
fuente