Форум программистов
 
Контакты: о проблемах с регистрацией, почтой и по другим вопросам пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail.

Вернуться   Форум программистов > Web > JavaScript, Ajax
Регистрация

Восстановить пароль
Повторная активизация e-mail


Ответ
 
Опции темы
Старый 31.03.2015, 10:00   #1
alexgrenn
Новичок
 
Регистрация: 05.08.2014
Сообщений: 3
Репутация: 10
По умолчанию Как подружить скрипт с маской

Здравствуйте очень нужна помощь
Ситуация такая есть скрипт который высчитывает время если промежуток временной попадает от 12:00 до 12:45 то в третьем поле пишутся минуты которые попали в этот промежуток к примеру в первом поле 12:10 во втором 12:20 в третьем поле появится 10

Но время приходится вбивать вручную так как маска ввода --:-- она хоть и работает но время в итоге не считается а без маски все работает. Но маска нужна ну или какая нибуть альтернатива чтобы время можно было забивать без ручного ввода ":" этих точек.


Вот сам код https://jsfiddle.net/alexgrenn/wqz18pf8/

Код HTML:
<!DOCTYPE HTML>
 
<html>
 
<head>
  <title>Untitled</title>
  <meta charset="utf-8">
  <style type="text/css">
 
  </style>
   <script>
    function cost(run, end) {
    var lunch = [(new Date()).setHours(12, 0, 0, 0),(new Date()).setHours(12, 45, 0, 0)]
    run =  (new Date()).setHours(run[0], run[1],0,0);
    end =  (new Date()).setHours(end[0], end[1],0,0);
    run > lunch[0] && (lunch[0]=run);
    end < lunch[1] && (lunch[1]=end);
    if(run > lunch[1]||end < lunch[0]||run > end) return 0;
    return (lunch[1] - lunch[0])/60000 ;
};
    document.addEventListener("input", function(event) {
    var el = event.target;
    if (el.classList.contains('time')) {
      var inp =  document.querySelectorAll('.time');
      if (inp[0].value.length != 5 || inp[1].value.length != 5) return ;
         var run =  inp[0].value.split(':'),
          end =  inp[1].value.split(':');
          inp[2].value = cost(run, end)
 
    }
});
 
  </script>
</head>
 
<body>
<input type="text" class="time">
<input type="text" class="time">
<input type="text" class="time">
</body>
 
</html>
alexgrenn вне форума   Ответить с цитированием
Старый 31.03.2015, 10:46   #2
mv28jam
Профессионал
 
Аватар для mv28jam
 
Регистрация: 09.09.2008
Адрес: РФ, Московская обл.
Сообщений: 2,830
Репутация: 1175
По умолчанию

Цитата:
чтобы время можно было забивать без ручного ввода ":" этих точек.
Ну так сделайте 4 поля ввода для времени...
__________________
Стрелок-охотник
mv28jam вне форума   Ответить с цитированием
Старый 31.03.2015, 11:09   #3
alexgrenn
Новичок
 
Регистрация: 05.08.2014
Сообщений: 3
Репутация: 10
По умолчанию

Четыре поля не подходят, так как данные после попадаю в базу данных, а если будет четыре поля то это уже будет не sql формат и форма отправки не сработает
alexgrenn вне форума   Ответить с цитированием
Старый 31.03.2015, 11:43   #4
Serge_Bliznykov
МегаМодератор
СуперМодератор
 
Регистрация: 09.01.2008
Сообщений: 24,354
Репутация: 5274
По умолчанию

Цитата:
Сообщение от alexgrenn Посмотреть сообщение
Четыре поля не подходят, так как данные после попадаю в базу данных, а если будет четыре поля то это уже будет не sql формат и форма отправки не сработает
простите меня за возможную невежественность.
Но кто мешает при отправке данных слить поля вместе в том же JS ?
Serge_Bliznykov вне форума   Ответить с цитированием
Старый 31.03.2015, 16:25   #5
alexgrenn
Новичок
 
Регистрация: 05.08.2014
Сообщений: 3
Репутация: 10
По умолчанию

Так вот получается что любое дополнительное так сказать воздействие на поля input рушит подсчет. Я же пробовал и дублирующие поля к первому input привязывал маску а во втором дублировались данные из первого вместе с маской тоже ничего не выходит, что то в самом скрипте не так но не знаю что. Почему то он выполняется только если на input действует только одно правило.
alexgrenn вне форума   Ответить с цитированием
Старый 01.04.2015, 04:38   #6
Fenex
Участник клуба
 
Аватар для Fenex
 
Регистрация: 15.02.2012
Сообщений: 821
Репутация: 439
По умолчанию

Цитата:
Так вот получается что любое дополнительное так сказать воздействие на поля input рушит подсчет.
Потому что вы написали код для двух полей. А вы перепешите код для четырёх полей, и всё будет работать.
__________________
^-.-^ Клавогонки.ру - набирай скорость!
Fenex вне форума   Ответить с цитированием
Ответ

Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как подружить swscanf и wchar_t monolit111 Общие вопросы C/C++ 0 18.09.2012 19:55
Как подружить Ribbon и Alpha Controls artemavd Компоненты Delphi 0 17.06.2012 17:44
Как подружить условия раскраски в DBGridEh artemavd Общие вопросы Delphi 2 08.05.2012 18:31
Как подружить SendMessage и TIdHTTP zcoder Работа с сетью в Delphi 1 13.04.2009 06:01


21:58.


Powered by vBulletin® Version 3.8.8 Beta 2
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.

RusProfile.ru


Справочник российских юридических лиц и организаций.
Проекты отопления, пеллетные котлы, бойлеры, радиаторы
интернет магазин respective.ru