입력 태그에 전화 번호 마스크를 만들려고합니다. 내 코드에 http://jsbin.com/hibuyus/edit?html,output입니다.커서가 입력 태그에서 작동하지 않습니다.
<!DOCTYPE HTML>
<html>
<head>
<title>Untitled</title>
<meta charset="utf-8">
</head>
<body>
<input id="phone" type="text" value="+7 (___) ___ __ __" size="18">
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js"></script>
<script>
$(document).ready(function($) {
var inputPhone = $("#phone"),
// cashedValue = "+7 (___) ___ __ __";
cashedValue = {
4: '_',
5: '_',
6: '_',
9: '_',
10: '_',
11: '_',
13: '_',
14: '_',
16: '_',
17: '_'
},
indexes = [4, 5, 6, 9, 10, 11, 13, 14, 15, 16];
inputPhone.on('keydown', function(event) {
console.log(event);
var $this = $(this);
if (event.key != "ArrowLeft" && event.key != "ArrowRight"){
event.preventDefault();
}
console.log("keyCode =", event.key, '(', event.keyCode, ')');
var defaultValue = this.defaultValue,
cursorPosition = event.target.selectionStart,
keyCode = event.keyCode;
console.log("cursorPosition =", cursorPosition);
if (48 <= keyCode && keyCode <= 57) {
if (cursorPosition < 4) {
cashedValue[4] = event.key;
} else if (4 <= cursorPosition && cursorPosition < 7) {
cashedValue[cursorPosition] = event.key;
} else if (cursorPosition == 7 || cursorPosition == 8) {
cashedValue[9] = event.key;
} else if (9 <= cursorPosition && cursorPosition < 12) {
cashedValue[cursorPosition] = event.key;
} else if (cursorPosition == 12) {
cashedValue[13] = event.key;
} else if (cursorPosition == 13 || cursorPosition == 14) {
cashedValue[cursorPosition] = event.key;
} else if (cursorPosition == 15) {
cashedValue[16] = event.key;
} else if (cursorPosition == 16 || cursorPosition == 17) {
cashedValue[cursorPosition] = event.key;
} else {
return false;
}
}
console.log("cashedValue =", cashedValue);
console.log("inputPhone =", inputPhone);
console.log("$this =", $this);
event.target.value = "+7 (" + cashedValue[4] + cashedValue[5] + cashedValue[6] + ") " + cashedValue[9] + cashedValue[10] + cashedValue[11] + " " + cashedValue[13] + cashedValue[14] + " " + cashedValue[16] + cashedValue[17];
// if ($this.setSelectionRange) {
// $this.setSelectionRange(0,0);
// } else if ($this.createTextRange) {
// range = $this.createTextRange();
// range.collapse(true);
// range.moveEnd('character', 0);
// range.moveStart('character', 0);
// range.select();
// }
});
});
</script>
</body>
</html>
문제 : 1) 숫자를 입력했습니다. 2) 해당 숫자가 현장의 올바른 장소에 나타납니다. 3) 커서가 입력 필드의 마지막 위치로 이동했습니다. 4) 그런 다음 키보드의 키를 눌렀습니다 (왼쪽 화살표와 오른쪽 화살표). 그러나 커서가 올바르게 움직이지 않습니다.
커서가 작동하지 않는 이유는 무엇입니까?
https://stackoverflow.com/a/41426991/4248328 또는 https://stackoverflow.com/a/37741956/4248328 또는 https://stackoverflow.com/ a/28773741/4248328 or https://stackoverflow.com/a/35305832/4248328 –
mask $ ('# number_phone'). 마스크 ("(000) 000 00 00"); –