여러 항목으로 이루어진 체크박스와 라디오의 체크여부를 일괄적으로 사용하기 위해
얕은 지식으로 머리를 굴렸고 아래와 같은 스크립트를 작성했다.
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 는 점점 더 사용하기 싫어진다.
반응형