24.09.2017, 19:53
|
|
Профессор
|
|
Регистрация: 19.02.2015
Сообщений: 219
|
|
рони,
Да, всё работает как нужно. Огромнейшее вам спасибо!!! И удачи!!!
|
|
11.10.2017, 09:32
|
|
Профессор
|
|
Регистрация: 19.02.2015
Сообщений: 219
|
|
рони,
я вас приветствую!
Я здесь немного пошаманил со скриптом, и мне не получается только два момента. Помогите, пожалуйста, сделать так, чтобы невозможно было клавишами Delete и Backspace удалять семерку. И второй момент - когда номер уже полностью набран, то при вводе уже лишней цифры, она вводится и тут же удаляется. Спасибо вам!
window.addEventListener("DOMContentLoaded", function() {
function setCursorPosition(pos, elem) {
elem.focus();
if (elem.setSelectionRange) elem.setSelectionRange(pos, pos);
else if (elem.createTextRange) {
var range = elem.createTextRange();
range.collapse(true);
range.moveEnd("character", pos);
range.moveStart("character", pos);
range.select()
}
}
var is_del = false;
var is_back = false;
function mask(event) {
var curent_position = -1;
if(event.type == "keyup"){
curent_position = this.selectionStart;
}
var matrix = "+7 (___) ___ ____",
i = 0,
def = matrix.replace(/\D/g, ""),
val = this.value.replace(/\D/g, "");
if (def.length >= val.length) val = def;
this.value = matrix.replace(/./g, function(a) {
return /[_\d]/.test(a) && i <= val.length ? val.charAt(i++) : i < val.length ? a : i++ == 6 && val.length == 4 && event.keyCode !=8 && event.keyCode !='' ? ")" : ""
});
is_back = is_del = false;
if(event.keyCode == 8) is_back = true;
else if(event.keyCode == 46) is_del = true;
if (event.type == "blur") {
if (this.value.length == 2) this.value = "";
} else if(curent_position != -1){
if(is_del || is_back){
setCursorPosition(curent_position, this);
}
} else if(event.type == "focus") setCursorPosition(this.value.length, this);
};
var input = document.querySelector("#tel");
input.addEventListener("focus", mask, false);
input.addEventListener("blur", mask, false);
input.addEventListener("keyup", mask, false);
});
<input type="text" id="tel">
|
|
11.10.2017, 11:48
|
|
Профессор
|
|
Регистрация: 19.02.2015
Сообщений: 219
|
|
рони,
всё равно семерка удаляется. И сейчас стало так, что удаляя одну цифру, удаляется сразу две, и при этом курсор перескакивает.
|
|
11.10.2017, 12:09
|
|
Профессор
|
|
Регистрация: 27.05.2010
Сообщений: 33,117
|
|
LADYX,
убрал код
|
|
11.10.2017, 12:17
|
|
Профессор
|
|
Регистрация: 27.05.2010
Сообщений: 33,117
|
|
LADYX,
теструйте
<!DOCTYPE HTML>
<html>
<head>
<title>Untitled</title>
<meta charset="utf-8">
</head>
<body>
<input value="" id="tel"> <input value="" > <input value="">
<script>
window.addEventListener("DOMContentLoaded", function() {
function setCursorPosition(pos, elem) {
elem.focus();
if (elem.setSelectionRange) elem.setSelectionRange(pos, pos);
else if (elem.createTextRange) {
var range = elem.createTextRange();
range.collapse(true);
range.moveEnd("character", pos);
range.moveStart("character", pos);
range.select()
}
}
var len = 0;
function mask(event) {
var matrix = "+7 (___) ___ ____",
i = 0,
def = matrix.replace(/\D/g, ""),
val = this.value.replace(/\D/g, "");
if (def.length >= val.length) val = def;
this.value = matrix.replace(/[_\d]/g, function(a) {
return i < val.length ? val.charAt(i++) : a
});
i = this.value.indexOf("_");
if(val.length < len) i = this.value.lastIndexOf(val.substr(-1))+1;
if (i != -1) {
i < 5 && (i = 3);
this.value = this.value.slice(0,i);
}
if (event.type == "blur") {
if (this.value.length < 5) this.value = ""
} else setCursorPosition(this.value.length, this);
len = val.length;
};
var input = document.querySelector("#tel");
input.addEventListener("input", mask, false);
input.addEventListener("focus", mask, false);
input.addEventListener("blur", mask, false);
});
</script>
</body>
</html>
Последний раз редактировалось рони, 11.10.2017 в 13:08.
|
|
11.10.2017, 12:20
|
|
Профессор
|
|
Регистрация: 27.05.2010
Сообщений: 33,117
|
|
Сообщение от LADYX
|
всё равно семерка удаляется.
|
это как?
|
|
11.10.2017, 12:33
|
|
Профессор
|
|
Регистрация: 19.02.2015
Сообщений: 219
|
|
рони,
Сообщение от рони
|
это как?
|
семерку можно удалить клавишами Delete или Backspace. Вот это хотелось бы как-то запретить.
|
|
11.10.2017, 13:07
|
|
Профессор
|
|
Регистрация: 27.05.2010
Сообщений: 33,117
|
|
Сообщение от LADYX
|
семерку можно удалить клавишами Delete или Backspace
|
не могу воспроизвести
|
|
11.10.2017, 13:38
|
Профессор
|
|
Регистрация: 04.12.2012
Сообщений: 3,791
|
|
Сообщение от рони
|
не могу воспроизвести
|
У меня тоже не получилось.
Однако семерку можно заменить любой другой цифрой.
Достаточно нажать на поле, зажать клавишу с любой цифрой (чтобы поле заполнилось), нажать home и ввести любую другую цифру.
|
|
11.10.2017, 13:51
|
|
Профессор
|
|
Регистрация: 27.05.2010
Сообщений: 33,117
|
|
Сообщение от Nexus
|
Однако семерку можно заменить любой другой цифрой.
|
хакер
|
|
|
|