Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- 과정평가형
- input
- json
- TO_DATE
- JVM
- html
- controller
- Ajax
- array
- POI
- 오류
- Database
- Oracle
- 배열
- javascript
- eGov
- Java
- web.xml
- 태그
- sql
- 개념
- eGovFramework
- was
- spring
- mybatis
- CSS
- select
- 함수
- 암호화
- jQuery
Archives
- Today
- Total
web developer
[jquery] Select 박스에서 '직접 입력' 옵션으로 입력란 토글하기: 표시와 숨김 기능 구현 본문
728x90
728x90
Select 박스에서 '직접 입력' 옵션으로 입력란 토글하기
1. html
<tr>
<th>형식</th>
<td>
<select id="selectBox">
<option value="">선택</option>
<option value="1">1번</option>
<option value="2">2번</option>
<option value="3">3번</option>
<option value="4">4번</option>
<option value="5">5번</option>
<option value="direct">직접 입력</option>
</select>
<input type="text" id="inputText" name="type" value="" maxlength="80" />
</td>
</tr>
2. js
function syncInputWithSelect() {
// select 박스의 첫번째 option 값으로 초기화
var selectBox = $("#selectBox");
selectBox.val(selectBox.find('option:first').val());
// input 태그의 값
var inputValue = $("#inputText").val();
var matchFound = false;
// option 수만큼 'each' 루프
$("#selectBox option").each(function(index) {
/* input 값과 select 박스의 option 값이 같은 경우
* 해당 option 값으로 selected
* matchFound = true
*/
if($(this).val() == inputValue) {
selectBox.prop('selectedIndex', index);
matchFound = true;
return false;
}
});
// (1) input 값과 select박스 값이 같은 경우 : input 태그 hide();
if(matchFound) {
$("#inputText").hide();
/* (2) input 값과 select박스 값이 다른 경우
* input 태그 show();
* 마지막 option인 '직접 입력'을 기본값으로 설정
*/
}else {
$("#inputText").show();
selectBox.val(selectBox.find('option:last').val());
}
}
$(function() {
syncInputWithSelect();
// change 이벤트
$("#selectBox").change(function() {
// (1) select 박스의 option에서 '직접 입력'을 선택한 경우 : input 태그 show();
if($("#selectBox").val() == "direct") {
$("#inputText").show();
// (2) select 박스의 option에서 '직접 입력'을 선택하지 않는 경우
}else {
/* select 박스의 option이 비어 있지 않은 경우
* input 태그 hide();
* select 박스의 값으로 input 태그 값에 넣어준다.
*/
$("#inputText").hide();
if($("#selectBox").val() != ""){
$("#inputText").val($("#selectBox").val());
}else {
$("#inputText").val("");
}
}
})
});
728x90
728x90
'JavaScript' 카테고리의 다른 글
[javaScript] 3개월 전 날짜 구하기 / Date 객체의 프로토타입 메서드 확장 (0) | 2024.06.05 |
---|---|
[javaScript] 절대 좌표, 상대 좌표 구하기 [스크롤, 마우스 이벤트] (2) | 2024.03.18 |
[javaScript ]JavaScript에서 0 == ""가 true인 이유는 무엇입니까? (2) | 2024.03.11 |
[javaScript] monthpicker jquery에서 입력받은 날짜로 '년/월' 변경하기 (0) | 2023.09.27 |
[javaScript] getDay() 활용하여 datepicker, 입력받은 날짜 수정하기 (0) | 2023.09.21 |