Nash Опубликовано 7.07.2023 в 06:09 Поделиться Опубликовано 7.07.2023 в 06:09 Подскажите, пожалуйста, как из атрибута "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> 0 Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
Blast Опубликовано 7.07.2023 в 07:07 Поделиться Опубликовано 7.07.2023 в 07:07 var email = $(select.options[select.selectedIndex]).attr('data-email'); 0 Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
Nash Опубликовано 7.07.2023 в 08:01 Автор Поделиться Опубликовано 7.07.2023 в 08:01 (изменено) В 07.07.2023 в 12:07, Blast сказал: var email = $(select.options[select.selectedIndex]).attr('data-email'); Изменено 7.07.2023 в 08:04 пользователем Nash 0 Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
Решение Sig Опубликовано 7.07.2023 в 10:36 Решение Поделиться Опубликовано 7.07.2023 в 10:36 Надо select сначала инициализировать. Типа такого var select = $('#sobSelect19')[0]; 2 Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
Blast Опубликовано 7.07.2023 в 11:51 Поделиться Опубликовано 7.07.2023 в 11:51 В 07.07.2023 в 13:36, Sig сказал: Надо select сначала инициализировать. Типа такого var select = $('#sobSelect19')[0]; переменная select - это входной параметр функции changeMail. и туда по событию onchange передается this - ссылка на селект. так что тут все норм, ничего заново инициализировать не надо В 07.07.2023 в 11:01, Nash сказал: вы в document.ready вызываете changeMail(); без параметров. поэтому получается что в данном случае select не определен. либо перепишите функцию, как выше написал @Sig либо changeMail(document.querySelector('#sobSelect19')); 3 Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
Sig Опубликовано 7.07.2023 в 12:00 Поделиться Опубликовано 7.07.2023 в 12:00 В 07.07.2023 в 16:51, Blast сказал: переменная select - это входной параметр Спасибо, что поправили, @Blast. 1 Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
Nash Опубликовано 7.07.2023 в 20:07 Автор Поделиться Опубликовано 7.07.2023 в 20:07 (изменено) В 07.07.2023 в 16:51, Blast сказал: переменная select - это входной параметр функции changeMail. и туда по событию onchange передается this - ссылка на селект. так что тут все норм, ничего заново инициализировать не надо вы в document.ready вызываете changeMail(); без параметров. поэтому получается что в данном случае select не определен. либо перепишите функцию, как выше написал @Sig либо changeMail(document.querySelector('#sobSelect19')); спасибо огромное! только почему не срабатывает без перевыбора option (например, при первоначальной загрузке)? и если одно значение в селекте, то тоже не срабатывает Изменено 7.07.2023 в 20:09 пользователем Nash 0 Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
Рекомендуемые сообщения
Присоединяйтесь к обсуждению
Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.
Примечание: Ваш пост будет проверен модератором, прежде чем станет видимым.