Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   JS: уникальный значение в инпутах (https://javascript.ru/forum/events/49404-js-unikalnyjj-znachenie-v-inputakh.html)

illide 11.08.2014 23:12

JS: уникальный значение в инпутах
 
Здравствуйте.
Есть 7 input'ов, чтобы поддерживалась кроссбраузерность, с типом text.
Подскажите, как реализовать:
Возможность расставлять в них значения только от 1 до 7, и если значение уже было, то его повторно ввести нельзя (стирается или алерт, лучше и то и другое). Т.е. в первом инпуте указали - 3, больше тройку указывать нельзя.
Функционал - очень похожей на тест, раставьте приоритеты в порядке ранжирования
Спасибо!

Aetae 12.08.2014 00:04

<div class="inputBlock">
  <input type="text" maxlength="1" size="1">
  <input type="text" maxlength="1" size="1">
  <input type="text" maxlength="1" size="1">
  <input type="text" maxlength="1" size="1">
  <input type="text" maxlength="1" size="1">
  <input type="text" maxlength="1" size="1">
  <input type="text" maxlength="1" size="1">
</div>
<script>(function(){
var inputArr = [], inputs = [].slice.call(document.querySelectorAll('.inputBlock input'));
function input(event){
  var target = event.target;
  if( //если
    /^[^1-7]$/.test(target.value) || //не равен 1-7
    inputs.some(function(el){return el !== target && el.value === target.value}) //уже введён
  ){
    return this.value = ''; //очищаем
  } else { //иначе
    if(this.nextElementSibling) this.nextElementSibling.focus() //фокус на следующий
  }
}
inputs.forEach(function(el){el.oninput = input})
}())</script>

illide 13.08.2014 03:04

Спасибо! Самое то


Часовой пояс GMT +3, время: 20:42.