Перейти к содержанию

Получить e-mail из атрибута и передать в контроллер


Перейти к решению Решений Sig,

Рекомендуемые сообщения

Подскажите, пожалуйста, как из атрибута "data-mail" option селекта передать значение в контроллер для отправки почты по данному адресу?
Сделал функцию changeMail, которая помещает значение атрибута в input, и повесил ее на select. Но она не срабатывает

 

<div class="form-group">
  <label for="sobSelect19" class="control-label col-sm-12" data-toggle="tooltip" data-original-title="">Адрес филиала</label>
  <select name="field[19][message]" class="form-control has-value" id="sobSelect19" onchange="changeMail(this)">
     <option data-email="****@yandex.ru" value="проспект Гагарина 1 линия, 9Б">проспект Гагарина 1 линия, 9Б</option>
     <option data-email="****@yandex.ru" value="3-й микрорайон проспекта имени Ю.А. Гагарина, 6А">3-й микрорайон проспекта имени Ю.А. Гагарина, 6А</option>
  </select>
</div>

<div class="form-group">
    <input type="email" class="form-control" data-toggle="tooltip" id="sobemail20" data-original-title="" name="field[20][message]">
    <label for="sobemail20" class="control-label">E-mail</label>
</div>

				<script>
				$(document).ready(function(){
					var selected = document.cookie.match(/select=(.+?);/);
					if (selected) {
						$('#sobSelect18').val(selected);
					}
					$('#sobSelect18').change(function(){	
						document.cookie = "prmn_fias2=" + $(this).val() + ";path=/";
					});
					loadFranchise();
					$('#sobSelect18 option[prmn_fias="<?php echo $city_geo; ?>"]').attr("selected", "selected");
					changeMail();
				});
				
				function changeMail(select){ //добавляем атрибут email в скрытый инпут
					var email = $('#sobSelect19').attr('data-email');
					$('#sobemail20').val(email);
				}
				
				function loadFranchise(select){ //загрузка списка филиалов франшиз
					var frSelect = $('select[id="sobSelect19"]');
					$.getJSON('index.php?route=common/header/FranchiseJson', function( franchiseList ){
						frSelect.html('');
						$.each(franchiseList, function( key, val ){
							frSelect.append('<option data-email="'+ val['email'] +'" value="'+ val['address'] +'">'+ val['address'] +'</option>');
						});
					});
				}	
				</script>  

image.thumb.png.36e45aca44aa75731a23c89259720807.png

Ссылка на комментарий
Поделиться на другие сайты

В 07.07.2023 в 13:36, Sig сказал:

Надо select сначала инициализировать. Типа такого

var select = $('#sobSelect19')[0];

 

переменная select - это входной параметр функции changeMail. и туда по событию onchange передается this - ссылка на селект. так что тут все норм, ничего заново инициализировать не надо

 

В 07.07.2023 в 11:01, Nash сказал:

image.png.43752dfa553a798e97e9287d678a7808.png

вы в document.ready вызываете

changeMail();
				

без параметров. поэтому получается что в данном случае select не определен. либо перепишите функцию, как выше написал @Sig либо

changeMail(document.querySelector('#sobSelect19'));
				

 

Ссылка на комментарий
Поделиться на другие сайты

В 07.07.2023 в 16:51, Blast сказал:

переменная select - это входной параметр функции changeMail. и туда по событию onchange передается this - ссылка на селект. так что тут все норм, ничего заново инициализировать не надо

 

вы в document.ready вызываете

changeMail();
				

без параметров. поэтому получается что в данном случае select не определен. либо перепишите функцию, как выше написал @Sig либо

changeMail(document.querySelector('#sobSelect19'));
				

 

спасибо огромное! 
только почему не срабатывает без перевыбора option (например, при первоначальной загрузке)? и если одно значение в селекте, то тоже не срабатывает

Изменено пользователем Nash
Ссылка на комментарий
Поделиться на другие сайты

Присоединяйтесь к обсуждению

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

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу
×
×
  • Создать...