Оптимизировать код,ограничение ввода в input
Есть 4 input проверка на ввод одинаковая для каждого, но после того как число вводимых символов превысило N надо переключиться на другой input.
Сделал так, но еше таких 4 блока писать многовато(размер файла будет большим), как это все в цикл можно запихать?
var PS_name_old_1="";
function PS_name_1(){
var PS_name = document.getElementById("id_PS_Name_1");
var result = PS_name.value.match( /^[\x2A-9a-zA-Z\x20\x27]{0,8}$/ig );
if(PS_name.value.length>8){
var el = document.getElementById("id_PS_Name_2");
el.focus();
el.selectionStart=0;
}
if(result==null){
PS_name.value=PS_name_old_1;
}
PS_name_old_1=PS_name.value;
}
|
pokk,
присвоить элементам класс и цикл с помощью forEach |
Цитата:
var PS_name_old=[];
function PS_name(N){
var PS_name = document.getElementById("id_PS_Name_"+N);
var result = PS_name.value.match( /^[\x2A-9a-zA-Z\x20\x27]{0,8}$/ig );
if(PS_name.value.length>8){
var el = document.getElementById("id_PS_Name_"+(N+1));
el.focus();
el.selectionStart=0;
}
if(result==null){
PS_name.value=PS_name_old[N];
}
PS_name_old[N]=PS_name.value;
}
|
Цитата:
|
pokk,
для чего служит модификатор i в выражении? |
А как определить теперь какой input вызвал эту функцию? что бы пропустить проверку на условие длины,а то сейчас получается каждый раз пере сбрасывает позицию курсора во втором input в начало.
var PS_name_old=[];
function PS_name(){
var Test = document.querySelectorAll('.PS_Name');
[].forEach.call(Test,function(el, i){
var result=el.value.match( /^[\x2A-9a-zA-Z\x20\x27]{0,8}$/g );
if(result==null){
el.value=PS_name_old[i];
}
PS_name_old[i]=el.value;
if(el.value.length>7){
var el_next=Test[i+1];
el_next.focus();
el_next.selectionStart=0;
}
});
}
<div align="center">
<input id="id_PS_Name_1" name="N_PS_Name_1" type="text" OnInput="PS_name()" maxlength="8" class="PS_Name">
<input id="id_PS_Name_2" name="N_PS_Name_2" type="text" OnInput="PS_name()" maxlength="8" class="PS_Name">
<input id="id_PS_Name_3" name="N_PS_Name_3" type="text" OnInput="PS_name()" maxlength="8" class="PS_Name">
<input id="id_PS_Name_4" name="N_PS_Name_4" type="text" OnInput="PS_name()" maxlength="8" class="PS_Name">
</div>
|
pokk,
<!DOCTYPE html>
<html>
<head>
<title>Untitled</title>
<meta charset="utf-8">
<style type="text/css">
</style>
<script>
window.addEventListener('DOMContentLoaded', function() {
var Test = document.querySelectorAll('.PS_Name');
[].forEach.call(Test, function(el,i) {
var PS_name_old="";
el.addEventListener('input', function() {
var result=el.value.match( /^[\x2A-9a-zA-Z\x20\x27]{0,8}$/g );
if(result==null){
el.value=PS_name_old;
}
PS_name_old=el.value;
var el_next=Test[i+1];
if(el.value.length>7 && el_next){
el_next.focus();
el_next.selectionStart=0;
}
});
});
});
</script>
</head>
<body>
<div align="center">
<input id="id_PS_Name_1" name="N_PS_Name_1" type="text" maxlength="8" class="PS_Name">
<input id="id_PS_Name_2" name="N_PS_Name_2" type="text" maxlength="8" class="PS_Name">
<input id="id_PS_Name_3" name="N_PS_Name_3" type="text" maxlength="8" class="PS_Name">
<input id="id_PS_Name_4" name="N_PS_Name_4" type="text" maxlength="8" class="PS_Name">
</div>
</body>
</html>
|
Цитата:
|
Цитата:
|
| Часовой пояс GMT +3, время: 01:47. |