Programing

jQuery radio, checkbox 체크여부확인

handam 2014. 2. 14. 10:55
반응형

여러 항목으로 이루어진 체크박스와 라디오의 체크여부를 일괄적으로 사용하기 위해

얕은 지식으로 머리를 굴렸고 아래와 같은 스크립트를 작성했다.



1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
function checkNextArrValidation(objName) {
    // console.log("objName..."+objName);
    // return false;
    // 객체의 Type 확인하여 분기
    var objType = $("input[name="+objName+"]").attr("type");
    if(objType == "checkbox") {
        if($(":checkbox[name="+objName+"]:checked").length < 1) { 
            // alert("선택하지 않은 항목이 있습니다.");
            return false;
        } else {
            return true;
        }
    } else if(objType == "radio") {
        if($(":radio[name="+objName+"]:checked").length == 0) {
            // alert("선택하지 않은 항목이 있습니다.");
            return false;
        } else {
            return true;
        }
    } else {
        // alert("undefined checkNextArrValidation()...");
        return false;
    }
}



일단 name 값을 받아서 해당 객체가 checkbox 인지 radio 인지 확인하고 

구분에 따라 분기를 주어 해당 type 에 맞는 쪽으로 흘러가게끔...


그런데 조금이라도 더 jQuery  에 대한 지식이 있는 방문자라면 단번에 알아낼 수 있을 것이다.


다른 문법으로 소스를 줄일 수 있었다.

다시 작성한 스크립트는 아래와 같다.



1
2
3
4
5
6
7
8
9
10
function checkNextArrValidation(objName) {
    // console.log("objName..."+objName);
    // return false;
 
    if(!$("input[name="+objName+"]").is(":checked")) {
        return false;
    } else {
        return true;
    }
}



체크박스, 라디오 구분 없이 해당 name 을 받아서 


is(":checked")


.....그렇다. 

무식하면 몸이 고생이다.



추가적으로 본문 상단의 ":checkbox[name..." 나 ":radio[name..." 같은 문법의 사용은 jQuery 의 버전과 

연관도 있으며 특히 IE 에서 예상하지 못한 현상이 발생하기도 했다.

역시 IE 는 점점 더 사용하기 싫어진다.



반응형