Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 12.01.2014, 22:57
Аспирант
Отправить личное сообщение для broadcast77 Посмотреть профиль Найти все сообщения от broadcast77
 
Регистрация: 25.12.2013
Сообщений: 31

Необычный алгоритм. Неповторяющиеся числа.
Добрый день, уважаемые форумчане. Подскажите пожалуйста, можно ли реализовать такой алгоритм?

Вот например у нас есть 3 input text, в который можно вводить числа.
Числа от 1 до 5. И если мы ввели в первый text число 1, то в два других input text мы теперь можем вводить только числа от 2 до 5.
А если после этого, мы ввели в третий input text число 4, то во второй мы можем ввести только 2, 3, 5. и т.д.

Подскажите пожалуйста алгоритм, если такое возможно реализовать. Конкретного кода не нужно. Буду рад просто услышать алгоритм или псевдокод. А если такое уже реализовывали, то пришлите пожалуйста ссылку.

Спасибо.
Ответить с цитированием
  #2 (permalink)  
Старый 12.01.2014, 23:19
Профессор
Отправить личное сообщение для Nexus Посмотреть профиль Найти все сообщения от Nexus
 
Регистрация: 04.12.2012
Сообщений: 2,943

Реализовать можно и довольно легко, но смысл в нем какой?
Кидай на каждый инпут обработчик события и проверяй условия, если условие ложно - чисть поле.
Ответить с цитированием
  #3 (permalink)  
Старый 13.01.2014, 00:03
Аватар для Poznakomlus
Профессор
Отправить личное сообщение для Poznakomlus Посмотреть профиль Найти все сообщения от Poznakomlus
 
Регистрация: 13.03.2013
Сообщений: 1,244

<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, 13.01.2014 в 02:56.
Ответить с цитированием
  #4 (permalink)  
Старый 13.01.2014, 01:02
Аспирант
Отправить личное сообщение для broadcast77 Посмотреть профиль Найти все сообщения от broadcast77
 
Регистрация: 25.12.2013
Сообщений: 31

Poznakomlus,
спс за помощь! единственное, что не врубаюсь где тут что, можно плиз с комментариями, если не сложно)
Ответить с цитированием
  #5 (permalink)  
Старый 13.01.2014, 01:28
Аватар для Poznakomlus
Профессор
Отправить личное сообщение для Poznakomlus Посмотреть профиль Найти все сообщения от Poznakomlus
 
Регистрация: 13.03.2013
Сообщений: 1,244

<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>

Последний раз редактировалось Poznakomlus, 13.01.2014 в 02:56.
Ответить с цитированием
  #6 (permalink)  
Старый 13.01.2014, 08:46
Аспирант
Отправить личное сообщение для broadcast77 Посмотреть профиль Найти все сообщения от broadcast77
 
Регистрация: 25.12.2013
Сообщений: 31

Спасибо! Так яснее!! =)
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Рандомные неповторяющиеся числа raler jQuery 10 03.08.2014 15:32
Как написать алгоритм выборки в javascript? Isaac Общие вопросы Javascript 13 06.02.2013 09:15
Волновой алгоритм Ли с 8-ми направлениями boy_cow Общие вопросы Javascript 6 04.10.2012 20:08
Расчет числа последовательностей Slavenin Оффтопик 10 20.03.2012 11:58
число 76.4705882.. сделать 76.47? (числа всегда разные) TongaG Ваши сайты и скрипты 3 19.01.2010 06:35