radio 버튼 처리를 위한 테스트 코드를 작성해 보았다.
초기 로딩 화면은 다음과 같다.
테스트 코드는 다음과 같다.
<!DOCTYPE html PUBLIC “-//W3C//DTD HTML 4.01 Transitional//EN” “http://www.w3.org/TR/html4/loose.dtd”>
<html>
<head>
<meta http-equiv=”Content-Type” content=”text/html; charset=EUC-KR”>
<title>Insert title here</title>
<script type=”text/javascript” src=”http://code.jquery.com/jquery-1.8.1.min.js”></script>
<script type=”text/javascript”>
$(document).ready(function() {
// DOM 생성 완료 시 화면 숨김
$(“#changeM”).hide();
$(“#changeI”).hide();
$(“#changeH”).hide();
// radio change 이벤트
$(“input[name=radioName]”).change(function() {
var radioValue = $(this).val();
if (radioValue == “M”) {
$(“#changeM”).show();
$(“#changeI”).hide();
$(“#changeH”).hide();
} else if (radioValue == “I”) {
$(“#changeI”).show();
$(“#changeM”).hide();
$(“#changeH”).hide();
} else if (radioValue == “H”) {
$(“#changeH”).show();
$(“#changeI”).hide();
$(“#changeM”).hide();
}
});
// 서버에서 전달 받은 값으로 radio 버튼 변경
$(“#changeUpdateRadio”).click(function() {
var resultValue = $(“#radioId”).val();
$(“input[name=radioName][value=” + resultValue + “]”).attr(“checked”, true);
});
// 체크 되어 있는지 확인
var checkCnt = $(“input[name=radioName]:checked”).size();
if (checkCnt == 0) {
// default radio 체크 (첫 번째)
$(“input[name=radioName]”).eq(0).attr(“checked”, true);
}
});
</script>
</head>
<body>
<div id=”radioArea”>
<input type=”radio” name=”radioName” value=”M” />mWeb
<input type=”radio” name=”radioName” value=”I” />inApp
<input type=”radio” name=”radioName” value=”H” />HTML5
</div>
<input type=”hidden” id=”radioId” value=”I”>
<br /><br />
<div id=”changeTextArea”>
<div id=”changeM”>
<span>this is M area</span>
<p>mobile web</p>
</div>
<div id=”changeI”>
<span>this is I area</span>
<p>inapp</p>
</div>
<div id=”changeH”>
<span>this is H area</span>
<p>html5</p>
</div>
</div>
<div id=”buttonArea”>
<input type=”button” id=”changeUpdateRadio” value=”서버에서 받은 버튼 값으로 radio 체크 위치 변경”>
</div>
</body>
</html>
여기서 한가지 고민되는 부분이 있었다.
radio 버튼을 클릭할 때마다 text를 변경하며 노출해야 하는데 위의 테스트 코드와 같이 hide(), show()를 이용하여 처리를 하다보면 버튼 항목이 추가되었을 때 늘어난 항목 만큼 조건절에 모두 추가해 줘야 한다.
그래서 루프를 이용하여 다음과 같이 처리하였다.
조금은 코드가 깔끔해 졌다. ^^
개발을 하다보면 시간에 쫓겨 이와 같은 고민을 하지 못하고, 그냥 지나쳐 버리곤 했는데 학습 테스트 코드를 작성하다 보면 이런 고민을 할 수 있어 여러모로 많은 도움이 되는 것 같다.