Me gustaría averiguar si una entrada es una casilla de verificación o no, y el siguiente no funciona:jQuery comprobar si una entrada es tipo casilla de verificación?
$("#myinput").attr('checked') === undefined
Gracias una vez más!
Me gustaría averiguar si una entrada es una casilla de verificación o no, y el siguiente no funciona:jQuery comprobar si una entrada es tipo casilla de verificación?
$("#myinput").attr('checked') === undefined
Gracias una vez más!
Puede utilizar la pseudo-selector de :checkbox
con una llamada a la función de jQuery is
:
$('#myinput').is(':checkbox')
$("#myinput").attr('type') == 'checkbox'
>>> a=$("#communitymode")[0]
<input id="communitymode" type="checkbox" name="communitymode">
>>> a.type
"checkbox"
O, más del estilo de jQuery:
$("#myinput").attr('type') == 'checkbox'
perfectamente válido. No es el más simple. – KyleFarris
Se ahorra usando el motor selector de jQuery, cuyo uso aquí es completamente inapropiado. La primera variante es mucho mejor, ya que evita cualquier posibilidad de confundir la función 'attr()' de jQuery estropeando todo. –
@Tim Down es correcto - debe cambiar 'attr()' a 'prop()', afaik. 'attr()' no siempre obtiene el valor de atributo "real" (es decir, marcado o no) del navegador. Sinceramente, no estoy seguro de por qué este es el caso, pero aprendí esto hace un tiempo. – thekingoftruth
Uso esta función:
function is_checkbox(selector) {
var $result = $(selector);
return $result[0] && $result[0].type === 'checkbox';
};
O este plugin de jQuery:
$.fn.is_checkbox = function() { return this.is(':checkbox'); };
una solución no jQuery es muy similar a una solución de jQuery:
document.querySelector('#myinput').getAttribute('type') === 'checkbox'
Este es el método que siempre uso. –
Realmente no puedes ser más simple que eso. – KyleFarris
¿Por qué usar el motor selector para esto? Es completamente innecesario. –