javascript와 Jquery를 사용하여 기본 변환기를 작성하기 위해 양식의 텍스트 입력을 확인하려고합니다. addEventListener 함수를 사용하면 Select 태그에서 "2", "10"및 "16"옵션에 해당하는 스위치 케이스를 호출 할 수있었습니다.Select 태그에서 addEventListener를 기반으로하는 스위치가 작동하지 않습니다.
문제는 선택 태그의 첫 번째 "변경"이벤트와베이스에서 감소 할 때만 작동한다는 것입니다. 예 : 기본 2를 선택하고 10 또는 16으로 변경하면 16 또는 10으로 변경하는 동안 0 또는 1 문자 만 허용합니다. 어떻게 해결할 수 있습니까?
$(document).ready(function() {
var getFromBase = document.getElementById('frombase-select');
getFromBase.addEventListener('change', function() {
switch(getFromBase.value) {
case '2':
$('#number').keypress(function(key) {
if((key.charCode < 48 || key.charCode > 49) && (key.charCode != 13)) { return false; }
});
break;
case '10':
$('#number').keypress(function(key) {
if((key.charCode < 48 || key.charCode > 57) && (key.charCode != 13)) { return false; }
});
break;
case '16':
$('#number').keypress(function(key) {
if((key.charCode < 48 || key.charCode > 57) && (key.charCode < 97 || key.charCode > 102) && (key.charCode < 65 || key.charCode > 70) && (key.charCode != 13)) { return false; }
});
break;
} // End switch
}); // End addEventListener
}); // End document.ready
.wrapper {
height: 90vh;
display: flex;
align-items: center;
justify-content: center;
}
form {
font-size: 20px;
width: 300px;
text-align: center;
border: 1px solid black;
padding: 20px;
}
form > * {
margin: 10px 0;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="wrapper">
<form action="index.php" method="post">
<div class="form-group flex-center">
<label>From Base:</label>
<select id="frombase-select" name="frombase">
<option selected disabled hidden>Enter a base</option>
<option>2</option>
<option>10</option>
<option>16</option>
</select>
</div>
<div class="form-group flex-center">
<label>Number:</label>
<input type="text" id="number" name="number">
</div>
</form>
</div>
'# frombase-select' 엘리먼트의 각'change' 이벤트에서'.keypress()'이벤트를'# number' 엘리먼트에 붙입니다. – guest271314
고마워요. 확실히 코드를 깨끗하게 만들었습니다. Heres는 다음과 같이 업데이트되었습니다. http://codepen.io/guizo/pen/ORByaQ – guizo