jQuery 입력이 유형 확인란인지 확인합니까?


151

입력이 확인란인지 여부를 알고 싶습니다. 다음이 작동하지 않습니다.

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

다시 한번 감사드립니다!

답변:


333

의사 선택기 :checkbox를 jQuery is함수 호출과 함께 사용할 수 있습니다 .

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

1
이것이 항상 사용하는 방법입니다.
Topher Fangio

당신은 그보다 더 간단하게 얻을 수 없습니다.
KyleFarris

9
왜 셀렉터 엔진을 사용합니까? 완전히 불필요합니다.
Tim Down

7
@Tim Down 나는 같은 일을 성취하는 더 효율적인 방법이있을 수 있다고 주장한다. 코드를 읽을 수 있기 때문에이 버전을 좋아한다고 가정합니다.
Ken Browning

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()함수가 무언가를 망칠 가능성을 피하기 때문에 훨씬 낫 습니다.
Tim Down

3
@ 팀 다운 바로 - 당신은 변경해야합니다 attr()prop()AFAIK. attr()브라우저에서 항상 "실제"속성 값을 얻지는 않습니다 (예 : 확인 여부). 솔직히 이것이 왜 그런지 잘 모르겠지만, 나는 이것을 얼마 전에 배웠습니다.
thekingoftruth

1
Chome에서 두 번째 예는 대소 문자를 구분합니다 ( jsfiddle.net/gtza0uuL) . .prop가 없지만 보증 할 수 있는지 모르겠습니다. 참고 : 'type'이 정의되지 않았기 때문에 .toLowerCase () 만 할 수는 없습니다.
xr280xr


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를 반환하고, 몇 시간 동안 검색하고 모든 것을 시도합니다. 이제 EDG를 브라우저 및 W2UI로 사용한다는 것이 분명합니다.


질문과 답변에 코드를 붙여 넣을 때 코드 리 팩터를 사용하십시오.
Andres Felipe
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.