入力が型チェックボックスであるかどうかjQueryチェック?


151

入力がチェックボックスであるかどうかを確認したいのですが、以下が機能しません。

$("#myinput").attr('checked') === undefined

もう一度ありがとう!

回答:


333

:checkboxjQueryのis関数の呼び出しで疑似セレクターを使用できます。

$('#myinput').is(':checkbox')

1
これは私がいつも使う方法です。
Topher Fangio

あなたは本当にそれより簡単なことはありません。
KyleFarris

9
なぜこれにセレクターエンジンを使うのですか?それは完全に不要です。
ティムダウン

7
@ティム・ダウン私は同じことを達成するためのより効率的な方法があるかもしれないとあなたのポイントをとります。コードが非常に読みやすいので、このバージョンが好きだと思います。
ケンブラウニング

2
@KenBrowning:十分に公平です。私は2009年にはかなりjQueryに反抗していました。特に、すべてに対してjQueryを盲目的に使用するという一般的なSOの態度でした。それ以来、私の見解は少し落ち着きました。可能であれば、反対票を取り消すつもりです。しかし、私はまだポイントがあったと思います。代替案(私が否定することはできませんが、より冗長です):var myInput = $("myinput")[0]; var isCheckbox = myInput.nodeName.toLowerCase() == "input" && myInput.type == "checkbox";
Tim Down

22
>>> a=$("#communitymode")[0]
<input id="communitymode" type="checkbox" name="communitymode">
>>> a.type
"checkbox"

または、jQueryのスタイルの詳細:

$("#myinput").attr('type') == 'checkbox'

完全に有効です。最も単純ではありません。
KyleFarris

6
jQueryのセレクターエンジンを使用すると節約できますが、ここでの使用は完全に不適切です。jQueryの混乱したattr()関数が何かを混乱させる可能性を回避するため、最初のバリアントははるかに優れています。
ティムダウン

3
@Tim Downは正しいです-afaikに変更attr()する必要がありますprop()attr()ブラウザから常に「実際の」属性値(つまり、チェックされているかどうか)を取得するわけではありません。正直なところ、なぜそうなのかはわかりませんが、私はしばらく前にこれを学びました。
thekingoftruth

1
Chomeでは、2番目の例では大文字と小文字が区別されます:jsfiddle.net/gtza0uuL。.propではありませんが、それが保証できるかどうかはわかりません。注: 'type'が定義されていない可能性があるため、.toLowerCase()を実行することもできません。
xr280xr 2015年


6

非jQueryソリューションは、jQueryソリューションによく似ています。

document.querySelector('#myinput').getAttribute('type') === 'checkbox'

2

この関数を使用します。

function is_checkbox(selector) {
    var $result = $(selector);
    return $result[0] && $result[0].type === 'checkbox';
};

または、このjqueryプラグイン:

$.fn.is_checkbox = function () { return this.is(':checkbox'); };

0
$('#myinput').is(':checkbox')

これは、チェックボックスがチェックされているかどうかを検出する問題を解決する唯一の作業です。trueまたはfalseを返します。何時間も検索してすべてを試しますが、今や仕事が明確になりました。ブラウザとW2UIとしてEDGを使用しています


質問と回答にコードを貼り付けるときは、コードリファクタリングを使用することを忘れないでください。
Andres Felipe
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.