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


JS при загрузке страницы

js javascript

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

#1 Darling

    Участник

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

Отправлено 03 Март 2016 - 10:31

Здравствуйте.

Есть ли функция JS которая после загрузки страницы выполняется и выводит alert если значение поля больше 0?
Искал на форуме, ничего подходящего не нашел.

#2 CbCoder

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

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

Отправлено 03 Март 2016 - 10:50

Как не нашли, если например тут есть почти все для вашей задачи:

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

Общий алгоритм для js в полях таким образом такой:

function onchange_{$one_field.id}() // имя функции может быть любым, необязательно "onchange_{$one_field.id}", главное чтобы не повторялось в других местах
{
  // любой нужный вам js-код
}
$(document).ready(onchange_{$one_field.id}); // запускаем функцию при событии загрузки страницы (т.о. нужные поля могут сразу скрываться)
$('#value{$one_field.id}').change(onchange_{$one_field.id}); // запускаем ту же самую функцию при событии изменения поля

Т.к. при изменении поля вам выполнение не нужно, то последнюю строку можно убрать. Соответственно получаем в итоге:

function onload_{$one_field.id}()
{
  if ($('#value{$one_field.id}').val() > 0) alert('Поле {$one_field.name_field} больше нуля!');
}
$(document).ready(onload_{$one_field.id}); // запускаем функцию при событии загрузки страницы

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

#3 Darling

    Участник

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

Отправлено 03 Март 2016 - 11:12

CbCoder, спасибо за подсказку. Но все примеры которые использовал не работают. Включаю ваши цитаты. Поле которое проверяется числовое с двумя знаками после нуля 0,01. Ошибок firebug не выдает.

#4 CbCoder

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

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

Отправлено 03 Март 2016 - 11:32

Тогда лучше такой вариант:

function onload_{$one_field.id}()
{
  if ($('#value{$one_field.id}').val() != '0,00') alert('Поле {$one_field.name_field} больше нуля!');
}
$(document).ready(onload_{$one_field.id}); // запускаем функцию при событии загрузки страницы

(если конечно у вас не используются отрицательные числа)

#5 Darling

    Участник

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

Отправлено 03 Март 2016 - 11:56

Отрицательные числа не используются. Функция работает, но alert срабатывает вне зависимости от значения поля т.е. на всех страницах)

#6 CbCoder

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

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

Отправлено 03 Март 2016 - 12:04

Я проверял код у себя - на страницах со значением поля "0,00" никакого алерта не выходит. Может вы сами что-то не то делаете? Например код не в том поле разместили.

#7 Darling

    Участник

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

Отправлено 03 Март 2016 - 12:19

Попробуйте снять права на редактирование поля и оставить только просмотр. Будет ли в этом случае работать?

#8 CbCoder

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

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

Отправлено 03 Март 2016 - 12:52

В случае отсутствия прав на редактирование поля, элемента $('#value{$one_field.id}') на странице нет, и разумеется код в этом случае работать не будет. Вообще, по умолчанию подразумевается что любой JS код из примеров работает только в случае редактируемого поля. По ссылке, которую я вам дал (https://clientbase.r...findpost&p=6097) об этом явно написано. В качестве альтернативного решения можете попробовать самостоятельно найти нужный элемент на странице и извлечь из него значение.

#9 Darling

    Участник

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

Отправлено 03 Март 2016 - 12:58

Спасибо, это я читал, но не принял во внимание. Наивно думал, что у меня другой случай так как запись от 11 Март 2011 - 18:45 уже могла быть не актуальной. :mellow: Видимо ошибся.

Сообщение отредактировал Darling: 03 Март 2016 - 13:24


#10 Darling

    Участник

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

Отправлено 03 Март 2016 - 13:46

Если поле доступно для редактирования, возможно ли его скрыть через JS когда нажимается кнопка редактировать?

#11 CbCoder

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

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

Отправлено 03 Март 2016 - 14:20

Именно "при нажатии" - нет, но этого и не нужно, достаточно скрыть элемент при загрузке страницы:

function onload_{$one_field.id}()
{
  $('#value{$one_field.id}').hide();
}
$(document).ready(onload_{$one_field.id}); // запускаем функцию при событии загрузки страницы

Правда так скроется только само поле, если нужно скрыть вместе с заголовком, то такой вариант:

function onload_{$one_field.id}()
{
  $('#field_edit{$one_field.id}').hide();
}
$(document).ready(onload_{$one_field.id}); // запускаем функцию при событии загрузки страницы


#12 CbCoder

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

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

Отправлено 03 Март 2016 - 14:29

Цитата

Наивно думал, что у меня другой случай так как запись от 11 Март 2011 - 18:45 уже могла быть не актуальной

А вы внимательно прочитали сообщение? Там же написано жирным шрифтом:

Цитата

Пример выше на текущий момент (2016 год) частично устарел

что говорит как минимум о том, что сообщение правилось уже в этом году (плюс внизу сообщения есть конкретная дата исправления), при этом все предупреждения расположены ниже этой надписи, а значит более чем актуальны на данный момент.

#13 Darling

    Участник

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

Отправлено 03 Март 2016 - 14:43

Просмотр сообщенияCbCoder (03 Март 2016 - 14:20) писал:

Именно "при нажатии" - нет, но этого и не нужно, достаточно скрыть элемент при загрузке страницы:

function onload_{$one_field.id}()
{
  $('#value{$one_field.id}').hide();
}
$(document).ready(onload_{$one_field.id}); // запускаем функцию при событии загрузки страницы

Правда так скроется только само поле, если нужно скрыть вместе с заголовком, то такой вариант:

function onload_{$one_field.id}()
{
  $('#field_edit{$one_field.id}').hide();
}
$(document).ready(onload_{$one_field.id}); // запускаем функцию при событии загрузки страницы

Задача в том, чтобы не дать отредактировать поле, но смотреть его нужно так как значение этого поля заполняет вычисление PHP. И в зависимости от результата выдает alert через JS для того чтобы пользователь обратил на него внимание.

Сообщение отредактировал Darling: 03 Март 2016 - 14:45


#14 CbCoder

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

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

Отправлено 03 Март 2016 - 14:46

И? Мое решение разве не удовлетворяет вашей задаче? Вы пробовали запустить код?

#15 Darling

    Участник

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

Отправлено 03 Март 2016 - 15:11

Просмотр сообщенияCbCoder (03 Март 2016 - 14:46) писал:

И? Мое решение разве не удовлетворяет вашей задаче? Вы пробовали запустить код?

Да все работает, спасибо. Вопрос закрыт.

Сообщение отредактировал Darling: 03 Март 2016 - 15:27


#16 Darling

    Участник

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

Отправлено 03 Март 2016 - 17:21

Для примера, может кому-то понадобится выложу результат.
Вывод оповещения для пользователя если значение строки число с запятой (хотя должна быть точка для правильный вычислений через JS) (0,00).

function onload_{$one_field.id}()
{
$('#field_edit{$one_field.id}').hide(); // Скрываем строку в режиме редактирования
  var rateField = $('#value{$one_field.id}').val(); // Прсваиваем переменной rateField значение текущего поля
  var rateReplace = rateField.replace(",", "."); // Меняем запятую на точку
  var rateFloat = parseFloat(rateReplace); // Переобразуем строку в число с плавующей точкой

if (rateFloat > 0 && rateFloat < 0.1) //Сравниваем текущий результат с нужным значением
{
	 alert('Поле {$one_field.name_field}  больше нуля и меньше 0.1!');
}

if (rateFloat >= 0.1)
{
	alert('Внимание! Поле {$one_field.name_field} больше или равно 0.1!');
}
}
$(document).ready(onload_{$one_field.id});

Сообщение отредактировал Darling: 03 Март 2016 - 17:22


#17 Radik

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

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

Отправлено 30 Ноябрь 2016 - 18:44

как с помощью ява скрипта можно изменять тип обязательное поле или нет?

#18 Timur

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

  • Техподдержка ООО "КБ"
  • PipPipPip
  • 854 сообщений
  • Пол:Мужчина

Отправлено 01 Декабрь 2016 - 11:31

Просмотр сообщенияRadik (30 Ноябрь 2016 - 18:44) писал:

как с помощью ява скрипта можно изменять тип обязательное поле или нет?

Здравствуйте!

На похожий вопрос уже есть ответ на нашем форуме - https://clientbase.r...indpost&p=29315





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

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