Здравствуйте.
Пытаюсь сделать чтобы вычисление до момента перехода на следующий этап проверило и при необходимости вывело уведомление с формой ввода для корректировки имеющегося значения.
Проблема в том, что форма ввода быстро появляется и исчезает.
Пробовал вариант с отражением формы в отдельном окне, но введенное значение не сохраняется.
Прикрепляю оба варианта кода.
Подскажите пжл что нужно сделать, чтобы форма, вызываемая вычислением, отражалась на экране до нажатия на кнопку "Продолжить" и введенное значение сохранилось в переменную.
Используемый код, в котором форма быстро пропадает:
<?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>";
}
?>
1
Окно ввода данных из вычисления
Автор saas_almazl, 12 февр. 2024 12:41
Сообщений в теме: 2
#1
Отправлено 12 Февраль 2024 - 12:41
#2
Отправлено 13 Февраль 2024 - 16:19
Вычисления в принципе не предназначены для вывода чего-либо (кроме всплывающих уведомлений через функцию calc_alerts), особенно при быстром редактировании которое в фоне данные сохраняет. Так что вы никак не реализуете свою задачу буквально. Через вычисление можно реализовать следующий вариант: 1) проверяем данные, 2) в случае несоответствия отменяем изменение через $event['changed'][111]['old'], где 111 - id поля, и 3) выводим уведомление пользователю о том что значение в указанном поле некорректное, исправьте на другое
Либо реализуете заполнение поля через доп.действие в всплывающем окне и там уже делаете какую угодно форму.
Либо реализуете заполнение поля через доп.действие в всплывающем окне и там уже делаете какую угодно форму.
#3
Отправлено 19 Февраль 2024 - 17:36
Понял, спасибо за разъяснения.
Количество пользователей, читающих эту тему: 2
0 пользователей, 2 гостей, 0 анонимных