Здравствуйте.
Пытаюсь сделать чтобы вычисление до момента перехода на следующий этап проверило и при необходимости вывело уведомление с формой ввода для корректировки имеющегося значения.
Проблема в том, что форма ввода быстро появляется и исчезает.
Пробовал вариант с отражением формы в отдельном окне, но введенное значение не сохраняется.
Прикрепляю оба варианта кода.
Подскажите пжл что нужно сделать, чтобы форма, вызываемая вычислением, отражалась на экране до нажатия на кнопку "Продолжить" и введенное значение сохранилось в переменную.
Используемый код, в котором форма быстро пропадает:
<?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
 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
					Понял, спасибо за разъяснения.
					
					
					
				
				
				
			
				Количество пользователей, читающих эту тему: 1
0 пользователей, 1 гостей, 0 анонимных


 
			
			 
				
				










