Necesito verificar la checked
propiedad de una casilla de verificación y realizar una acción basada en la propiedad marcada usando jQuery.
Por ejemplo, si la casilla de verificación de edad está marcada, entonces necesito mostrar un cuadro de texto para ingresar la edad, de lo contrario, ocultar el cuadro de texto.
Pero el siguiente código regresa false
por defecto:
if ($('#isAgeSelected').attr('checked'))
{
$("#txtAge").show();
}
else
{
$("#txtAge").hide();
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input type="checkbox" id="isAgeSelected"/>
<div id="txtAge" style="display:none">
Age is selected
</div>
¿Cómo consulto con éxito la checked
propiedad?
javascript
jquery
html
checkbox
Prasad
fuente
fuente
$('#isAgeSelected').checked
$('#isAgeSelected')[0].checked
Respuestas:
La
checked
propiedad de un elemento DOM de casilla de verificación le dará elchecked
estado del elemento.Dado su código existente, por lo tanto, podría hacer esto:
Sin embargo, hay una manera mucho más bonita de hacer esto, usando
toggle
:fuente
is(':checked')
negocio.this.checked
no es jQuery, como lo solicitó el OP. Además, solo funciona cuando el usuario hace clic en la casilla de verificación, que no es parte de la pregunta. La pregunta es, nuevamente,How to check whether a checkbox is checked in jQuery?
en cualquier momento dado con o sin hacer clic en la casilla de verificación y en jQuery.Use la función is () de jQuery :
fuente
$("#txtAge").toggle($("#isAgeSelected").is(':checked'))
.visible
"propiedad" ( propiedad ? quiere decir método ?) porque el elemento sin HTML tiene una propiedad visible Tienen unadisplay
propiedad de estilo y es un poco más complejo que activar / desactivar.Usando jQuery> 1.6
Usando el nuevo método de propiedad:
fuente
.prop
método es la forma diseñada para verificar los accesorios. .. ... Si vas a hacer el.is(":checked")
enfoque, está bien, pero no es la forma diseñada para hacerlo usando jquery. ¿Correcto?.is(":checked")
y.prop("checked")
son dos formas válidas de obtener el mismo resultado en jQuery,.is
funcionará en todas las versiones,.prop
requiere 1.6+.attr('checked')
en jQuery 1.11.3, quedará indefinido, donde si lo usa.prop('checked')
, obtendrá verdadero / falso. No veo por qué lo cambiaron para que funcione de esta manera cuando los navegadores más antiguos no pueden admitir las versiones posteriores de jQuery que se introdujeron.prop()
y, por lo tanto, lo necesitan.attr()
. La única gracia salvadora es que los navegadores más antiguos (es decir, IE 8) no pueden soportar nada> jQuery 1.9. ¡Esperemos que no hayan hecho esto (make.attr('checked')
= undefined) en esa versión! Afortunadamente, siempre haythis.checked
.jQuery 1.6+
jQuery 1.5 y abajo
Cualquier versión de jQuery
Todo el crédito va a Xian .
fuente
this.checked
está usando Javascript directo. ¡Pero me encanta esa respuesta cross-jQuery-version!Estoy usando esto y esto está funcionando absolutamente bien:
Nota: Si la casilla de verificación está marcada, devolverá verdadero, de lo contrario no está definido, así que mejor verifique el valor "VERDADERO".
fuente
.attr()
! Si solo se hubieran dejado lo suficientemente solos ... Encontramos otra respuesta aquí que dice que puedes usarthis.checked
para una solución cross-jQuery, ya que es básicamente Javascript.Utilizar:
fuente
Desde jQuery 1.6, el comportamiento de
jQuery.attr()
ha cambiado y se recomienda a los usuarios que no lo usen para recuperar el estado verificado de un elemento. En su lugar, debe usarjQuery.prop()
:Otras dos posibilidades son:
fuente
Esto funcionó para mí:
¿Dónde
isAgeSelected
está la identificación del control?Además, la respuesta de @ karim79 funciona bien. No estoy seguro de lo que me perdí en el momento en que lo probé.
Tenga en cuenta que esta respuesta utiliza Microsoft Ajax, no jQuery
fuente
== true
Si está utilizando una versión actualizada de jquery, debe buscar el
.prop
método para resolver su problema:$('#isAgeSelected').prop('checked')
volverátrue
si está marcado yfalse
si no está marcado. Lo confirmé y me encontré con este problema antes.$('#isAgeSelected').attr('checked')
y$('#isAgeSelected').is('checked')
está regresando, loundefined
cual no es una respuesta digna para la situación. Entonces, haga lo que se indica a continuación.Espero que ayude :) Gracias.
fuente
$('#isAgeSelected').checked
?Utilizando el
Click
controlador de eventos para la propiedad de casilla de verificación no es confiable, ya que lachecked
propiedad puede cambiar durante la ejecución del controlador de eventos.Idealmente, desearía poner su código en un
change
controlador de eventos, ya que se activa cada vez que se cambia el valor de la casilla de verificación (independientemente de cómo se haga).fuente
.on()
método es el método preferido para adjuntar controladores de eventos a un documento.Utilizar:
Esto puede ayudar si desea que la acción requerida se realice solo cuando marque la casilla y no en el momento en que la quite.
fuente
Decidí publicar una respuesta sobre cómo hacer exactamente lo mismo sin jQuery. Solo porque soy un rebelde.
Primero obtienes ambos elementos por su ID. Luego asigna las casillas de verificación
onchange
evento una función que verifica si la casilla de verificación se marcó y establece lahidden
propiedad del campo de texto de edad de manera adecuada. En ese ejemplo usando el operador ternario.Aquí hay un violín para que lo pruebes.
Apéndice
Si la compatibilidad entre navegadores es un problema, propongo establecer la
display
propiedad CSS en none e inline .Más lento pero compatible con varios navegadores.
fuente
.hidden
no es muy cruzado, aunque me gusta esta solución :)style
. Sin embargo, eso es lamentable, ya que el.hidden
rendimiento es mucho mejor .Creo que podrías hacer esto:
fuente
Me encontré con exactamente el mismo problema. Tengo una casilla de verificación ASP.NET
En el código jQuery utilicé el siguiente selector para verificar si la casilla de verificación estaba marcada o no, y parece funcionar de maravilla.
Estoy seguro de que también puede usar la ID en lugar de CssClass,
Espero que esto te ayude.
fuente
Hay muchas formas de verificar si una casilla está marcada o no:
Forma de verificar usando jQuery
Consultar ejemplo o también documento:
http://api.jquery.com/attr/
http://api.jquery.com/prop/
fuente
Este código te ayudará
fuente
Esto funciona para mi:
fuente
Este es un método diferente para hacer lo mismo:
fuente
Utilizar este:
La longitud es mayor que cero si la casilla de verificación está marcada.
fuente
Mi forma de hacer esto es:
fuente
Esto vuelve
true
si la entrada está marcada yfalse
si no lo está.fuente
.attr('checked')
que no siempre devuelve el estado correcto. Según la respuesta de Salman A (y tal vez la de otros), es una opción más segura de usar . Además, también es posible declarar como ..prop('checked')
undefined
var undefined = 'checked';
.prop('checked')
Parece una mejor respuesta ahora. No era tan confiable en el momento en que fue escrito. No entiendo, ni creo que sea una buena idea volver a declarar indefinido.typeof (x) !== "undefined"
fuente
Puedes usar:
Ambos deberían funcionar.
fuente
1) Si su marcado HTML es:
Attr utilizado:
Si se usa utilería:
2) Si su marcado HTML es:
Attr utilizado:
Prop utilizado:
fuente
Este ejemplo es para el botón.
Intenta lo siguiente:
fuente
La respuesta principal no lo hizo por mí. Esto hizo sin embargo:
Básicamente, cuando se hace clic en el elemento # li_13, se verifica si el elemento # de acuerdo (que es la casilla de verificación) se marca mediante la
.attr('checked')
función. Si es entonces fadeIn en el elemento #saveForm, y si no es fadeOut en el elemento saveForm.fuente
Estoy usando esto:
fuente
Aunque ha propuesto una solución de JavaScript para su problema (mostrando un
textbox
cuandocheckbox
eschecked
), este problema podría resolverse simplemente con css . Con este enfoque, su formulario funciona para los usuarios que han deshabilitado JavaScript.Suponiendo que tiene el siguiente HTML:
Puede usar el siguiente CSS para lograr la funcionalidad deseada:
Para otros escenarios, puede pensar en los selectores CSS apropiados.
Aquí hay un violín para demostrar este enfoque .
fuente
Toggle: 0/1 o bien
fuente
Creo que será el simple.
fuente