Необычный алгоритм. Неповторяющиеся числа.
Добрый день, уважаемые форумчане. Подскажите пожалуйста, можно ли реализовать такой алгоритм?
Вот например у нас есть 3 input text, в который можно вводить числа. Числа от 1 до 5. И если мы ввели в первый text число 1, то в два других input text мы теперь можем вводить только числа от 2 до 5. А если после этого, мы ввели в третий input text число 4, то во второй мы можем ввести только 2, 3, 5. и т.д. Подскажите пожалуйста алгоритм, если такое возможно реализовать. Конкретного кода не нужно. Буду рад просто услышать алгоритм или псевдокод. А если такое уже реализовывали, то пришлите пожалуйста ссылку. Спасибо. |
Реализовать можно и довольно легко, но смысл в нем какой?
Кидай на каждый инпут обработчик события и проверяй условия, если условие ложно - чисть поле. |
<body> <div id="data"> <input type="text" /> <input type="text" /> <input type="text" /> </div> <script> var data = document.getElementById('data'), allInput = data.querySelectorAll('input'), len = allInput.length; data.oninput = function (e) { e = e || window.event; var target = e.target || e.srcElement; if ('INPUT' != target.tagName) return false; var thisValue = target.value; if (thisValue <= 0 || thisValue > 5 || isNaN(thisValue)) target.value = ''; for (var i = 0; i < len; i++) { if (target == allInput[i]) continue; if (thisValue == allInput[i].value) target.value = ''; } } </script> </body> |
Poznakomlus,
спс за помощь! единственное, что не врубаюсь где тут что, можно плиз с комментариями, если не сложно) |
<body> <div id="data"> <input type="text" /> <input type="text" /> <input type="text" /> </div> <script> // выбрали div c id #data и все INPUT в нем allInput var data = document.getElementById('data'), allInput = data.querySelectorAll('input'), // len - количество INPUT len = allInput.length; // обрабатываем событие oninput элемента data data.oninput = function (e) { // кроссброузерно получили элемент вызвавший событие e = e || window.event; var target = e.target || e.srcElement; // если событие вызвал не INPUT выходим if ('INPUT' != target.tagName) return false; // получили значение элемента var thisValue = target.value; // проверяем принадлежит ли значение элемента диапазону. Число ли это и если нет, то значение ставим пусто if (thisValue <= 0 || thisValue > 5 || isNaN(thisValue)) target.value = ''; // проверяем в цикле содержится ли новое значение в других input for (var i = 0; i < len; i++) { //если проверяемый элемент равен текущему продолжить цикл с новой позиции if (target == allInput[i]) continue; // если значение равно значению иного INPUT, то значение ставим пусто if (thisValue == allInput[i].value) target.value = ''; } } </script> </body> |
Спасибо! Так яснее!! =)
|
Часовой пояс GMT +3, время: 18:45. |