Tengo un cuadro de diálogo jQuery que requiere que el usuario ingrese cierta información. De esta forma, tengo un botón "continuar". Me gustaría que este botón "continuar" solo se habilite una vez que todos los campos tengan contenido, de lo contrario, permanecerá deshabilitado.
Escribí una función que se llama cada vez que cambia el estado de un campo. Sin embargo, no sé cómo habilitar y deshabilitar el botón de diálogo desde esta función. ¿Qué tengo que hacer?
¡Vaya! Olvidé mencionar que estos botones se crearon de la siguiente manera:
$(function() {
$("#dialog").dialog({
bgiframe: true,
height: 'auto',
width: 700,
show: 'clip',
hide: 'clip',
modal: true,
buttons: {
'Add to request list': function() {
$(this).dialog('close');
$('form').submit();
},
'Cancel': function() {
$(this).dialog('close');
}
}
})
});
Respuestas:
Desea establecer la propiedad deshabilitada
Actualización : Ahha, veo la complejidad ahora. El jQuery Dialog tenía una sola línea que será útil (en la sección "botones".
Tendrá que obtener la colección de botones del cuadro de diálogo, recorrerlo para encontrar cuál necesita y luego configurar el atributo deshabilitado como se mostró anteriormente.
fuente
.prop('disabled', true)
es preferido en jQuery 1.6+Es muy simple:
fuente
.prop('disabled', true)
es preferido en jQuery 1.6+Has terminado de complicar una tarea simple; El cuadro de diálogo jQueryUI tiene dos formas de configurar botones por una razón.
Si solo necesita configurar el controlador de clic para cada botón, use la opción que toma un
Object
argumento. Para deshabilitar botones y proporcionar otros atributos, use la opción que toma unArray
argumento.El siguiente ejemplo deshabilitará un botón y actualizará su estado correctamente aplicando todas las clases y atributos de jQueryUI CSS.
Paso 1 - Crea tu diálogo con uno
Array
de los botones:Paso 2: active / desactive el botón Listo después de crear el cuadro de diálogo:
fuente
each
bucle es innecesario. Especifique unclass
atributo en labuttons
matriz y puede usarlo para encontrar el elemento correcto.Si crea un cuadro de diálogo que proporciona identificaciones para los botones,
Podemos desactivar el botón con el siguiente código:
fuente
Quería poder encontrar el botón por nombre (ya que tengo varios botones en mi cuadro de diálogo jQuery UI). También tengo varios cuadros de diálogo en la página, así que necesito una forma de obtener los botones de un cuadro de diálogo específico. Aquí está mi función:
fuente
Esto deshabilita un botón:
Debe agregar la identificación del cuadro de diálogo si tiene varios cuadros de diálogo en una página.
fuente
Aquí está el ejemplo de la pregunta modificada para deshabilitar el botón una vez que se hace clic:
Además, la siguiente pregunta también será útil con esto: ¿Cómo puedo desactivar un botón en un cuadro de diálogo de jQuery UI?
fuente
Encontré una manera fácil de desactivar (o realizar cualquier otra acción) en un botón de diálogo.
Simplemente seleccione el padre de su diálogo y encuentre todos los botones. Luego, revisando el Texto de su botón, puede identificar sus botones.
fuente
Obtuve esto trabajando con el método
.dialog("widget")
que devuelve el cuadro de diálogo DIV. Si estás en los métodos de diálogo:fuente
Desde una perspectiva de usabilidad, generalmente es mejor dejar el botón habilitado pero mostrar un mensaje de error si alguien intenta enviar un formulario incompleto. Me vuelve loco cuando el botón en el que quiero hacer clic está deshabilitado y no hay idea de por qué.
fuente
Prueba esto:
fuente
Aquí está mi función enableOk para un diálogo jQuery:
El botón "primero" es el que está más a la derecha. Ambos deshabilitan el botón y configuran la clase deshabilitada del cuadro de diálogo para obtener el efecto visual adecuado.
fuente
En la IU jQuery heredada (versión 1.7.3) pude simplemente usar
simplemente deshabilitar el botón en el elemento DOM mismo. Ahora que hemos actualizado a la nueva interfaz de usuario jQuery (versión 1.8.7), ese método ya no funciona en Firefox, pero simplemente puedo llamar al botón jquery UI para deshabilitar y habilitar funciones específicas en los objetos jquery del botón:
fuente
jaja, acabo de encontrar un método interesante para acceder a los botones
Parece que todos ustedes no saben que hay un objeto de evento en los argumentos ...
por cierto, solo accede al botón desde dentro de la devolución de llamada, en casos generales, es bueno agregar una identificación para acceder
fuente
Si realmente desea deshabilitar un botón, descubrí que también debe llamar al método .unbind (). De lo contrario, el botón aún puede estar activo, y un doble clic podría generar múltiples envíos de formularios. El siguiente código funciona para mí:
fuente
Encontré una solución alternativa que puede aplicarse a las personas que intentan hacer algo similar. En lugar de deshabilitar el botón, pongo una
if
declaración simple en la función para verificar si la casilla de verificación estaba marcada.Si no era así, mostraba un mensaje simple que decía que había que marcar la casilla antes de enviarla.
Por ejemplo:
De todos modos, espero que eso ayude a alguien.
fuente
Creé una función jQuery para hacer esta tarea un poco más fácil. Simplemente agregue esto a su archivo JavaScript:
Deshabilite el botón 'Aceptar' en el diálogo con la clase 'diálogo':
Habilitar todos los botones:
Habilite el botón 'Cerrar' y cambie el color:
Espero que esto ayude.
fuente
Desafortunadamente, ninguna de las soluciones proporcionadas aquí funcionó para varios diálogos en la página.
Además, el problema era que el diálogo original no contiene el panel de botones en sí mismo, sino que es un hermano del mismo.
Entonces se me ocurrió seleccionar por ID de diálogo así:
...
...
y luego la misma función getFirstDialogButton () podría usarse más tarde para habilitar el botón, por ejemplo, después de una validación exitosa.
Espero que pueda ayudar a alguien.
fuente
Aquí hay un ejemplo que acabo de implementar usando el método Array de asignación de botones, que luego me permite usar selectores de identificación más adelante, tal como se indicó originalmente en la respuesta aceptada, para habilitar / deshabilitar botones e incluso mostrarlos / ocultarlos por completo. haciendo.
Después de enviar con éxito, deshabilito y oculto dos de los botones y habilito el botón Aceptar que estaba deshabilitado de forma predeterminada.
Espero que esto ayude.
fuente
Creé una función similar a la que hizo Nick, pero mi método no requeriría configurar dialogClass y podrá obtener los botones de un diálogo específico a través de la identificación (si existe más de uno en su aplicación)
Entonces, si creó el diálogo de esta manera:
Puede obtener los botones haciendo lo siguiente:
Deshabilitar:
Para permitir:
fuente
Solo para que conste, esta publicación me ayudó a resolver mi problema. En pocas palabras, debe establecer el atributo deshabilitado en deshabilitado, no en falso:
Así es como se ve todo el código, también agregué algunos estilos para que se vea deshabilitado:
fuente
Creo que debería funcionar con todos,
fuente
Para deshabilitar el botón Guardar en mi cuadro de diálogo, use la siguiente línea en su función.
Para cambiar un texto en un botón, use la siguiente línea (esto cambia el texto del botón Cancelar a Cerrarme)
fuente
@ Chris Puede usar las siguientes líneas de código para habilitar / deshabilitar los botones de diálogo hasta que su casilla de verificación esté marcada / desmarcada
Fuente original: http://jsfiddle.net/nick_craver/rxZPv/1/
fuente
Llamar,
.attr("disabled", true)
por supuesto, funciona, pero usando jQuery le gustaría hacerlo de una manera más 'azúcar', así que he escrito una extensión simple:Ahora tiene funciones
enable()
ydisable()
, para que pueda hacer su trabajo de esa manera:Que es lo mismo que
y
fuente
Esto hizo el trabajo para mí:
fuente
En el mundo jQuery, si desea seleccionar un objeto de un conjunto de elementos DOM, debe usar eq () .
Ejemplos:
o
fuente
De acuerdo con la documentación :
https://api.jqueryui.com/dialog/#option-buttons
Para poder simplemente seleccionar el botón, puede agregar una propia clase CSS al botón, que debería estar habilitada / deshabilitada.
Entonces la habilitación / deshabilitación se vería así:
fuente
Si alguien está buscando reemplazar un botón con algo como una animación de carga al hacer clic (por ejemplo, cuando un botón "Enviar" envía el formulario en el cuadro de diálogo), puede reemplazar el botón con su imagen de esta manera:
jQuery replaceCon documentos
fuente
Para deshabilitar un botón, en el cuadro de diálogo abierto:
fuente