Ошибки в форме ticketForm, как продебажить и исправить?

Зделал создание тикета без регистрации, альтернативным способом, указанном в заметке: modx.pro/solutions/5288

Добавил tv-поля email и name, сделал сохранение в черновики.

Все работает отлично в «стандартном» варианте — когда все поля заполняются сразу.

Решил сделать отправку формы в два этапа.
Вначале "Заголовок" и "Текст", а на втором этапе в модальном окне "Имя" и "Email".

Первый этап проходит, содержимое полей" Заголовок", "Текст" и «sections» с выбранной секцией отправляются в форму на второй этап.

Второй этап — открывается модальное окно, заполняются поля Имя" и "Email" и при нажатии на кнопку "Отправить" — сообщение: "В форме содержаться ошибки. Пожалуйста исправьте их.".

Вот код чанка:
<h2>Новая форма вопрос-ответ</h2>
<div class="ticket-form-vo">
	
	<div class="form-group">
		<label for="ticket-sections">[[%tickets_section]]</label>
		<select name="parent" class="form-control" id="ticket-sections">{$sections}</select>
		<span class="error"></span>
	</div>

			
	<div class="error_text" style="color:red;"></div>	
		<div class="form-group">
			<label for="ticket-pagetitle">[[%ticket_pagetitle]]</label>					
			<input type="text" class="form-control" name="pagetitle" id="ticket-pagetitle" placeholder="[[%ticket_pagetitle]]" value="" maxlength="100">   
			<span class="error"></span>
		</div>	
		<div class="form-group">				
			<textarea class="form-control" name="content" id="ticket-editor" placeholder="[[%ticket_content]]" rows="6"></textarea>				
			<span class="error"></span>
		</div>

		<button class="blue-button" onclick="validate_pre_vopros();">Спросить</button>	
		<div class="clr"></div>
</div>

{$_modx->regClientHTMLBlock('
<script src="/assets/js/bootstrap.min.js" defer></script>
<script>	
		function validate_pre_vopros(){
           if ($(\'#ticket-editor\').val() == ""){
         		$(\'#ticket-editor\').css(\'border\',\' 2px solid #ff0000\') ;
   	  			$(\'.ticket-form-vo .error_text\').html(\'Введите Ваш вопрос\');
           }else{
		if ($(\'.pre_poll_choicem2\').prop( "checked" ) == true)
		  $(\'#urgent\').val(\'on\');
                  $(\'#ticket-editor\').css(\'border\',\'none\');
		  $(\'#ticket-sections-step2\').val($(\'#ticket-sections\').val());			   
                  $(\'#voprostext-step2\').val($(\'#ticket-editor\').val());
		  $(\'#voprostitle-step2\').val($(\'#ticket-pagetitle\').val());
		  $(\'.ticket-form-vo .error_text\').html(\'\');
                  $(\'.modal-vopros-step2\').modal(\'show\');
           }
   		};		
		//обработка нажатия на кнопку главного вопроса
		$(\'.main-vopros\').click(function(event){
		$(\'.modal-vopros .modal-title\').html(\'Задать вопрос\');		
		 });
	</script>

<div class="modal fade modal-vopros-step2" tabindex="-1" role="dialog" aria-labelledby="myLargeModalLabel" aria-hidden="true" style="display: none;">
<div class="modal-dialog">
  <div class="modal-content">
	<div class="modal-header">
	  <!-- Закрывает окно -->
	  <button type="button" class="close" data-dismiss="modal" aria-hidden="true"></button>
	  <h4 class="modal-title" id="myLargeModalLabel">Оставьте свои контактные данные</h4>
	</div>
	<div class="modal-body">	
		<form action="" method="post" id="ticketForm" class="well create">
		    <div id="ticket-preview-placeholder"></div>

			<input type="hidden" name="tid" value="0"/>
		
			<select name="parent" id="ticket-sections-step2" class="form-control">' ~ $sections ~ '</select>
			<input type="hidden" name="content" id="voprostext-step2" value="">
			<input type="hidden" name="pagetitle" id="voprostitle-step2" value="">		
					
			<div class="error_text"></div>					
				
			<div class="form-group">				
				<label for="ticket-author">Имя</label><span class="error"></span>
						
				<input type="text" name="author_vo" id="ticket-author" class="form-control input__no-radius" placeholder="Ваше имя" maxlength="50" value=""> 
			</div>
				
			<div class="form-group">	
				<label for="ticket-author-email">Ваш Email</label><span class="error"></span>							
				<input type="email" name="email_author_vo" id="ticket-author-email" class="form-control input__no-radius" placeholder="Ваш Email" maxlength="50" value=""> 				
			</div>			
		
		<div class="form-actions row">
			<div class="col-md-6 move-right">
				<input type="submit" class="more buttons blue" name="draft" id="submit" value="Отправить вопрос">				
			</div>
		</div>		
		<div class="end"></div>		
	</form>

	</div>
  </div><!-- /.modal-content -->
</div><!-- /.modal-dialog -->
</div>
')}


Такое ощущение, что сниппет не видит поля формы второго этапа — Имя" и "Email". В то же время не выдает сообщение что «Это поле обязательно» а выдает — "В форме содержаться ошибки. Пожалуйста исправьте их.".

Не пойму в чем может быть проблема. Прошу помощи!!! Может у меня в коде что-то не так?
Дмитрий
14 апреля 2019, 09:06
49
0

Комментарии: 1

Дмитрий
14 апреля 2019, 19:05
0
Причину нашел.
Не формируется
<input type="hidden" name="form_key" value="4090d1b8a88f13b58ec291ec032a859a" class="disable-sisyphus">
перед
</form>


Прописал вручную вышеуказанную строку перед
</form>

Но правильно ли это?
И как формировать динамический form_key?

Не всегда же он будет таким:
value="4090d1b8a88f13b58ec291ec032a859a"
Как сделать динамическое формирование и подставление вышеуказанного input перед
</form>

Или хотя бы динамическое выведение value="" с заполненным значением?
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.