А как определить теперь какой 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>