Mi piacerebbe scoprire se un ingresso è una casella di controllo o no, e il seguente non funziona:jQuery controlla se un input è tipo checkbox?
$("#myinput").attr('checked') === undefined
Grazie ancora una volta!
Mi piacerebbe scoprire se un ingresso è una casella di controllo o no, e il seguente non funziona:jQuery controlla se un input è tipo checkbox?
$("#myinput").attr('checked') === undefined
Grazie ancora una volta!
È possibile utilizzare la pseudo-selettore :checkbox
con una chiamata alla funzione di jQuery is
:
$('#myinput').is(':checkbox')
$("#myinput").attr('type') == 'checkbox'
>>> a=$("#communitymode")[0]
<input id="communitymode" type="checkbox" name="communitymode">
>>> a.type
"checkbox"
O, più dello stile di jQuery:
$("#myinput").attr('type') == 'checkbox'
perfettamente valida. Non il più semplice – KyleFarris
Si salva usando il motore di selezione di jQuery, il cui uso qui è del tutto inappropriato. La prima variante è molto meglio, poiché evita qualsiasi possibilità di confusione della funzione 'attr()' di jQuery. –
@Tim Down ha ragione - dovresti cambiare 'attr()' in 'prop()', afaik. 'attr()' non ottiene sempre il valore dell'attributo "reale" (cioè controllato o meno) dal browser. Onestamente non sono sicuro del perché questo è il caso, ma ho imparato questo tempo fa. – thekingoftruth
Usa questa funzione:
function is_checkbox(selector) {
var $result = $(selector);
return $result[0] && $result[0].type === 'checkbox';
};
O questo plugin jQuery:
$.fn.is_checkbox = function() { return this.is(':checkbox'); };
una soluzione non-jQuery è molto simile a una soluzione di jQuery:
document.querySelector('#myinput').getAttribute('type') === 'checkbox'
Questo è il metodo che uso sempre. –
Non puoi davvero diventare più semplice di così. – KyleFarris
Perché usare il motore di selezione per questo? È completamente inutile. –