Ввод номера сотового телефона
Здравствуйте!
У меня есть поля типа 8-<input size='3'>-<input size='3'>-<input size='2'>-<input size='2'> Как сделать, что при заполнении одного поля, фокус автоматически переходил на следующее? |
Вы просите готовый скрипт с нуля.
Это работа, и за нее обычно платят деньги. Для таких сообщений предназначен раздел форума "Работа". Если вы все же хотите, чтобы вам помогли - приложите какие-то усилия сами и задавайте вопросы по ходу дела. |
Цитата:
Мне надо чтоб вы мне показали, что надо расммотреть (функцию или еще что) |
используйте события onchange для первого элемента, и когда его свойство value(являющееся его содержимым) достигнет нужной вам длины, вызовите метод focus() у соответсвующегго элемента
|
Вот вам решение, подстраивайте под свою страничку:
<script>
window.onload=function(){
var inputs=document.getElementsByTagName('input');
for(i=0; i<inputs.length; i++) inputs[i].onkeydown='verifyLength(this, '+i+')';
}
function verifyLength(input, order){
var inputs=document.getElementsByTagName('input');
if(input.size==input.value.length) inputs[order+1].focus();
}
</script>
8 -<input size="3"> -<input size="3"> -<input size="2"> -<input size="2">
|
Как-то так:
<script type="text/javascript">
window.onload = function(){
var input = document.getElementsByName('input'), i = input.length;
while(i--){
input[i].onkeyup = (function(i){
return function(){
if (this.size == this.value.length && input[i + 1]) {
input[i+1].focus();
}
};
})(i);
}
};
</script>
8
-<input type="text" size="3" maxlength="3" name="input" />
-<input type="text" size="3" maxlength="3" name="input" />
-<input type="text" size="4" maxlength="4" name="input" />
PS: на самом деле еще нужно делать несколько проверок: - только цифры - очищать постидущие поля |
monolithed, в моём и твоём примере есть ещё один недостаток - если нажать клавишу любую и не отпускать, текст будет печататься но не перескакивать, понятно что происходит это всё из-за того что событие одно и проверяется только один раз при зажатии клавиши. А в моём примере также недостаток ещё это то что при полном поле инпута клавиша бекспейс не отработает, но это можно решить проверкой кейкода (код бекспейса 8).
|
Цитата:
Цитата:
Цитата:
|
Цитата:
<script>
window.onload = function () {
var inputs = document.getElementsByTagName('input');
for (i = 0; i < inputs.length; i++) {
inputs[i].onkeyup = (function (x) {
return function () {
if (inputs[x].size == inputs[x].value.length && inputs[x + 1]) {
inputs[x + 1].focus();
}
}
})(i)
}
}
</script>
8 -<input size="3" maxlength="3"> -<input size="3" maxlength="3"> -<input size="2" maxlength="2"> -<input size="2" maxlength="2">
С onkeyup backspace работает, ну понятно почему, событие проверяется когда клавиша отжимается, а когда backspace отожмётся уже условие для смены фокуса выполняться не будет. |
monolithed, Vulkan на всякий случай сделайте проверку на наличие input[i+1] прежде чем передать ему фокус )))
|
| Часовой пояс GMT +3, время: 07:40. |