Перейти к содержимому


как с помощью яваскрипта сделать предупреждение - СРАЗУ при выборе даты


Сообщений в теме: 19

#1 tel

    Активный участник

  • Пользователи
  • PipPipPip
  • 187 сообщений

Отправлено 11 Март 2011 - 08:14

посоветуйте как с помощью яваскрипта сделать следующее:

ситуация №1
если сотрудник выбирает дату меньшую сегодняшней - то у него СРАЗУ (до сохранения строки) появляется предупреждающее сообщение. (только сообщение, т.е. он может оставить эту дату).

ситуация №2
сотрудник заполняет текстовое поле и как только количество символов в нем станет больше 10 - он получает сообщение и не может ввести больше символов (кстати - если такой скрипт сделать - то для многих решиться вопрос с маской ввода)

#2 CbCoder

    Активный участник

  • Программист ООО "КБ"
  • PipPipPip
  • 8 759 сообщений
  • Пол:Мужчина
  • Город:Казань

Отправлено 11 Март 2011 - 11:40

ситуация №1
function onchange_{$one_field.id}()
{
  field_value = document.getElementById('value{$one_field.id}').value;
  // далее сравниваем field_value (учтите что дата в нем в русском формате!) с текущей датой; как получить тек.дату в javascript смотрите в документации по javascript
  if (сравнение) alert("Дата меньше сегодняшней!");
}
addHandler(document.getElementById('value{$one_field.id}'), 'onchange', onchange_{$one_field.id});
ситуация №2
function onkeyup_{$one_field.id}()
{
  field_value = document.getElementById('value{$one_field.id}').value;
  if (field_value.length > 10)
	{
	  alert("Число символов превышает допустимое!");
	  document.getElementById('value{$one_field.id}').value = field_value.substr(0,10);
	}
}
addHandler(document.getElementById('value{$one_field.id}'), 'onkeyup', onkeyup_{$one_field.id});


#3 tel

    Активный участник

  • Пользователи
  • PipPipPip
  • 187 сообщений

Отправлено 11 Март 2011 - 17:46

спасибо огромное.... то что нужно

#4 Lovent

    Активный участник

  • Пользователи
  • PipPipPip
  • 93 сообщений

Отправлено 13 Август 2011 - 00:39

необходимо, чтобы, если пользователь введет пробелы, ему база делала замечания.

посмотрите, пожалуйста, этот код:

function onkeyup_{$one_field.id}()
{
  field_value = document.getElementById('value{$one_field.id}').value;
  if (field_value.value ==" ")
    {
      alert("Введите e-mail адрес вместо пробелов!")
      return false 
    }
}
addHandler(document.getElementById('value{$one_field.id}'), 'onkeyup', onkeyup_{$one_field.id});


почему-то не срабатывает.

#5 CbCoder

    Активный участник

  • Программист ООО "КБ"
  • PipPipPip
  • 8 759 сообщений
  • Пол:Мужчина
  • Город:Казань

Отправлено 13 Август 2011 - 12:08

Точки с запятой забыли проставить - синтаксическая ошибка. Ищите в браузере отладчик JavaScript и проверяйте по нему.

#6 Lovent

    Активный участник

  • Пользователи
  • PipPipPip
  • 93 сообщений

Отправлено 13 Август 2011 - 21:23

Просмотр сообщенияРазработчик (13.8.2011, 12:08) писал:

Точки с запятой забыли проставить - синтаксическая ошибка. Ищите в браузере отладчик JavaScript и проверяйте по нему.


такой вариант тоже не работает:

function onkeyup_{$one_field.id} ()
{
field_value = document.getElementById('value{$one_field.id}').value;
if (field_value.value ==" ")
{
alert("Введите e-mail адрес вместо пробелов!");
return false;
}
}
addHandler(document.getElementById('value{$one_field.id}'), 'onkeyup', onkeyup_{$one_field.id});

#7 CbCoder

    Активный участник

  • Программист ООО "КБ"
  • PipPipPip
  • 8 759 сообщений
  • Пол:Мужчина
  • Город:Казань

Отправлено 15 Август 2011 - 09:32

Разумеется он не будет работать, если Вы пытаетесь извлечь свойство value из строки уже его содержащей:

field_value = document.getElementById('value{$one_field.id}').value;
if (field_value.value ==" ")

Уже вторая ваша ошибка - из-за банальной невнимательности.

Это во-первых, во-вторых return false в данном случае вам ничего не даст - он не отменит ввод пробела. Лучше явно обнулять поле:

document.getElementById('value{$one_field.id}').value = "";

Получаем:
function onkeyup_{$one_field.id} ()
{
  field_value = document.getElementById('value{$one_field.id}').value;
  if (field_value == " ")
	{
	  alert("Введите e-mail адрес вместо пробелов!");
	  document.getElementById('value{$one_field.id}').value = "";
	}
}
addHandler(document.getElementById('value{$one_field.id}'), 'onkeyup', onkeyup_{$one_field.id});


#8 nk

    Активный участник

  • Пользователи
  • PipPipPip
  • 228 сообщений
  • Пол:Мужчина

Отправлено 16 Октябрь 2011 - 18:43

подскажите, как сделать: есть поле типа "список", необходимо чтобы определенные значения списка отображались жирным шрифтом

#9 CbCoder

    Активный участник

  • Программист ООО "КБ"
  • PipPipPip
  • 8 759 сообщений
  • Пол:Мужчина
  • Город:Казань

Отправлено 17 Октябрь 2011 - 09:39

Никак не сделаете, элементы списка не поддерживают форматирование.

#10 wondertalik

    Активный участник

  • Пользователи
  • PipPipPip
  • 1 159 сообщений
  • Пол:Мужчина
  • Город:Кривой Рог, Украина

Отправлено 22 Февраль 2013 - 19:59

Поле типа список со значениями: Да или Нет. Можно ли с помощью яваскрипта при редактировании в режиме таблицы сделать вылетающее модальное окно "Вы действительно хотите изменить"? Если да - значение меняется, нет - не меняется.

#11 CbCoder

    Активный участник

  • Программист ООО "КБ"
  • PipPipPip
  • 8 759 сообщений
  • Пол:Мужчина
  • Город:Казань

Отправлено 23 Февраль 2013 - 11:13

Яваскрипт в режиме таблицы не работает.

#12 Bob_chemist

    Активный участник

  • Пользователи
  • PipPipPip
  • 56 сообщений
  • Пол:Мужчина
  • Город:Казань

Отправлено 01 Июнь 2013 - 13:27

Посоветуйте, пожалуйста. С яваскриптом не знаком вообще, но судя по прочитанному, именно он тут и нужен.

Есть 2 таблицы: "Группы" и "Курсанты". Курсанты - подчиненная по по полю связь "группа" (id 30). В таблице группы есть поле список "Набрана"(id 215) и значения Да и Нет.
Как вывести предупреждение (а в идеале и вовсе запретить добавление строки), если пользователь при добавлении курсанта выбирает ему в поле связь группу со значением "Да" в поле "Набрана"?
Заранее спасибо

#13 Дмитрий ЕСП

    Активный участник

  • Пользователи
  • PipPipPip
  • 78 сообщений
  • Пол:Мужчина

Отправлено 19 Ноябрь 2013 - 09:44

Просмотр сообщенияCbCoder (11 Март 2011 - 11:40) писал:

ситуация №1
function onchange_{$one_field.id}()
{
  field_value = document.getElementById('value{$one_field.id}').value;
  // далее сравниваем field_value (учтите что дата в нем в русском формате!) с текущей датой; как получить тек.дату в javascript смотрите в документации по javascript
  if (сравнение) alert("Дата меньше сегодняшней!");
}
addHandler(document.getElementById('value{$one_field.id}'), 'onchange', onchange_{$one_field.id});

Учитывая, что КБ в первую очередь сделана для менеджеров, прошу вас описать ситуацию №1 более подробно с примером сравнения (далее сравниваем field_value (учтите что дата в нем в русском формате!) с текущей датой; как получить тек.дату в javascript смотрите в документации по javascript
if (сравнение) alert("Дата меньше сегодняшней!");).
Это будет полезно для администраторов пользующихся шаблонами подобных примеров.

#14 Дмитрий ЕСП

    Активный участник

  • Пользователи
  • PipPipPip
  • 78 сообщений
  • Пол:Мужчина

Отправлено 21 Ноябрь 2013 - 12:47

Я могу рассчитывать на ответ по записи 13 ?

#15 wondertalik

    Активный участник

  • Пользователи
  • PipPipPip
  • 1 159 сообщений
  • Пол:Мужчина
  • Город:Кривой Рог, Украина

Отправлено 21 Ноябрь 2013 - 12:52

Просмотр сообщенияДмитрий ЕСП (21 Ноябрь 2013 - 12:47) писал:

Я могу рассчитывать на ответ по записи 13 ?
Я Вам вечером напишу.

#16 Дмитрий ЕСП

    Активный участник

  • Пользователи
  • PipPipPip
  • 78 сообщений
  • Пол:Мужчина

Отправлено 21 Ноябрь 2013 - 13:33

Спасибо! Жду

#17 wondertalik

    Активный участник

  • Пользователи
  • PipPipPip
  • 1 159 сообщений
  • Пол:Мужчина
  • Город:Кривой Рог, Украина

Отправлено 22 Ноябрь 2013 - 03:37

function onchange_{$one_field.id}()
{
  field_value = document.getElementById('value{$one_field.id}').value;
  // далее сравниваем field_value (учтите что дата в нем в русском формате!) с текущей датой; как получить тек.дату в javascript смотрите в документации по javascript
var date = new Date(field_value.replace(/(\d+).(\d+).(\d+)/, '$3/$2/$1'));
var date2 = new Date();
  if (date.getTime() < date2.getTime())
		jalert("Дата меньше сегодняшней!");
}
addHandler(document.getElementById('value{$one_field.id}'), 'onchange', onchange_{$one_field.id});
Как-то так.

Сообщение отредактировал wondertalik: 22 Ноябрь 2013 - 03:37


#18 Дмитрий ЕСП

    Активный участник

  • Пользователи
  • PipPipPip
  • 78 сообщений
  • Пол:Мужчина

Отправлено 22 Ноябрь 2013 - 16:19

Просмотр сообщенияwondertalik (22 Ноябрь 2013 - 03:37) писал:

function onchange_{$one_field.id}()
{
  field_value = document.getElementById('value{$one_field.id}').value;
  // далее сравниваем field_value (учтите что дата в нем в русском формате!) с текущей датой; как получить тек.дату в javascript смотрите в документации по javascript
var date = new Date(field_value.replace(/(\d+).(\d+).(\d+)/, '$3/$2/$1'));
var date2 = new Date();
  if (date.getTime() < date2.getTime())
		jalert("Дата меньше сегодняшней!");
}
addHandler(document.getElementById('value{$one_field.id}'), 'onchange', onchange_{$one_field.id});
Как-то так.

Большое спасибо за помощь.

Попробовал, но не работает.

Я просто скопировал и вставил в JavaScript поля Дата.

Извините за глупый вопрос, что-то менять в этом шаблоне под мои данные надо или нет?

Я просто скопировал и вставил JavaScript.

Ещё раз спасибо.

Сообщение отредактировал Дмитрий ЕСП: 22 Ноябрь 2013 - 16:20


#19 serg499

    Активный участник

  • Пользователи
  • PipPipPip
  • 109 сообщений
  • Пол:Мужчина
  • Город:Москва

Отправлено 22 Ноябрь 2013 - 17:09

Просмотр сообщенияДмитрий ЕСП (22 Ноябрь 2013 - 16:19) писал:

Я просто скопировал и вставил в JavaScript поля Дата.

Извините за глупый вопрос, что-то менять в этом шаблоне под мои данные надо или нет?
Просто скопировать не получится, $one_field.id необходимо заменить для Вашего конкретного случая на id поля, изменение значения которого и должно вызвать срабатывание вычисления.

Сообщение отредактировал serg499: 22 Ноябрь 2013 - 17:09


#20 wondertalik

    Активный участник

  • Пользователи
  • PipPipPip
  • 1 159 сообщений
  • Пол:Мужчина
  • Город:Кривой Рог, Украина

Отправлено 22 Ноябрь 2013 - 18:18

Просмотр сообщенияserg499 (22 Ноябрь 2013 - 17:09) писал:

Просто скопировать не получится, $one_field.id необходимо заменить для Вашего конкретного случая на id поля, изменение значения которого и должно вызвать срабатывание вычисления.
Это не совсем верно. Если яваскрипт скопировать в поле типа дата, то должно сработать. Если не сработает - возможно баг. Проверю на практике, отпишу в тп по необходимости.





Количество пользователей, читающих эту тему: 1

0 пользователей, 1 гостей, 0 анонимных