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


Окно ввода данных из вычисления


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

#1 saas_almazl

    Новичок

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

Отправлено 12 Февраль 2024 - 12:41

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

Используемый код, в котором форма быстро пропадает:

<?php
$dataId = $line['ID'];
// Проверяем, была ли отправлена форма
if (isset($_POST["submit"])) {
// Если форма была отправлена, сохраняем значение в переменной $newValue
$newValue = $_POST["inputValue"];
data_update(840, EVENTS_ENABLE, ['f13860' => $newValue ], "`id`='",$dataId,"'");
} else {
// Если форма не была отправлена, выводим текст и форму
echo "<form id='myForm' method='post' action=''>";
echo "<p>Проверьте информацию</p>";
echo "<input type='text' name='inputValue' placeholder='Введите данные' required>";
echo "<input type='submit' name='submit' value='Продолжить'>";
echo "<input type='hidden' name='csrf' value='{$csrf}'>";
echo "</form>";
}
?>

Код с открытием формы в новом окне, который не сохраняет введенное значение:

<?php
$dataId = $line['ID'];
// Проверяем, была ли отправлена форма
if (isset($_POST["submit"])) {

// Если форма была отправлена, сохраняем значение в переменной $newValue
$newValue = $_POST["inputValue"];

data_update(840, EVENTS_ENABLE, ['f13860' => $newValue ], "`id`='",$dataId,"'");
} else {
// Если форма не была отправлена, выводим текст и форму
echo "<script>";
echo "function openFormWindow() {";
echo " var formWindow = window.open('', '_blank', 'width=400,height=400');"; // Открываем новое окно
echo " formWindow.document.write('<p>Проверьте информацию</p>');";
echo " formWindow.document.write('<form id=\"myForm\" method=\"post\" action=\"\">');"; // Добавляем форму
echo " formWindow.document.write('<input type=\"text\" name=\"inputValue\" placeholder=\"Введите данные\" required>');";
echo " formWindow.document.write('<input type=\"submit\" name=\"submit\" value=\"Продолжить\">');";
echo " formWindow.document.write('<input type=\"hidden\" name=\"csrf\" value=\"{$csrf}\">');"; // Добавляем CSRF токен
echo " formWindow.document.write('</form>');"; // Закрываем форму
echo "}";
echo "openFormWindow();"; // Вызываем функцию для открытия нового окна с формой
echo "</script>";
}
?>

#2 CbCoder

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

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

Отправлено 13 Февраль 2024 - 16:19

Вычисления в принципе не предназначены для вывода чего-либо (кроме всплывающих уведомлений через функцию calc_alerts), особенно при быстром редактировании которое в фоне данные сохраняет. Так что вы никак не реализуете свою задачу буквально. Через вычисление можно реализовать следующий вариант: 1) проверяем данные, 2) в случае несоответствия отменяем изменение через $event['changed'][111]['old'], где 111 - id поля, и 3) выводим уведомление пользователю о том что значение в указанном поле некорректное, исправьте на другое

Либо реализуете заполнение поля через доп.действие в всплывающем окне и там уже делаете какую угодно форму.

#3 saas_almazl

    Новичок

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

Отправлено 19 Февраль 2024 - 17:36

Понял, спасибо за разъяснения.





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

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