Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 14.03.2017, 21:23
Интересующийся
Отправить личное сообщение для alex-tiesto Посмотреть профиль Найти все сообщения от alex-tiesto
 
Регистрация: 04.03.2017
Сообщений: 18

Передать значение input radio в другой input
Имеется каталог товаров.

У каждого товара есть варианты выбора в виде input type="radio".

Также у каждого товара есть кнопка "заказать" по нажатию на которую появляется форма обратной связи содержащая скрытый инпут.

Форма обратной связи вызывается для всех товаров одна и та же.

ID и label для инпутов генерируются скриптом

<script>
        $(function getValue() {
            $('input[type="radio"]').each(function(indx, el){
                $(this).next().attr("for" , "radio"+indx)
                this.id = "radio"+indx
                var id = "radio"+indx

            });
        });
    </script>



сами инпуты:
<div class="wrapper_all_radio">
                                <div class="radio_wrapper">
                                    <input type="radio" id="radio" name="radio" />
                                    <label for="radio"><span></span>23 см</label><span class="price_tovar_item">8.5 руб.</span>
                                </div>
                                <div style="clear: both"></div>
                                <div class="radio_wrapper">
                                    <input type="radio"  id="radio" name="radio" />
                                    <label for="radio"><span></span>30 см</label><span class="price_tovar_item">30 руб.</span>
                                </div>
                                <div style="clear: both"></div>
                                <div class="radio_wrapper">
                                    <input type="radio" id="radio" name="radio" />
                                    <label for="radio"><span></span>36 см</label><span class="price_tovar_item">15 руб.</span>
                                </div>
                            </div>



кнопка заказать:

<a class="tovar_item_link">заказать</a>


Собственно вопрос - как передать значение выбранного инпута в форму?
Ответить с цитированием
  #2 (permalink)  
Старый 15.03.2017, 02:44
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

Сообщение от alex-tiesto
как передать значение выбранного инпута в форму?
В вашем случае никак, потому, как выбрать среди них невозможно. А если бы и было возможно, то не имеют ваши кнопки никаких значений. К томе же, У каждого товара есть варианты выбора в виде input type="radio"., и эта связь товара с кнопками есть засекреченная информация?
Ответить с цитированием
  #3 (permalink)  
Старый 15.03.2017, 08:44
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,121

alex-tiesto, у тебя
id="radio"

повторяется у многих элементов... ИД должно быть уникально на странице.
Ответить с цитированием
  #4 (permalink)  
Старый 15.03.2017, 17:36
Интересующийся
Отправить личное сообщение для alex-tiesto Посмотреть профиль Найти все сообщения от alex-tiesto
 
Регистрация: 04.03.2017
Сообщений: 18

Сообщение от laimas Посмотреть сообщение
В вашем случае никак, потому, как выбрать среди них невозможно. А если бы и было возможно, то не имеют ваши кнопки никаких значений. К томе же, У каждого товара есть варианты выбора в виде input type="radio"., и эта связь товара с кнопками есть засекреченная информация?
value у инпутов есть, не ту верстку скинул )

Касаемо засекреченной информации - не понял Вас!

Скидываю ссылку на страницу с товарами ссылка, возможно так понятней будет
Ответить с цитированием
  #5 (permalink)  
Старый 15.03.2017, 17:41
Интересующийся
Отправить личное сообщение для alex-tiesto Посмотреть профиль Найти все сообщения от alex-tiesto
 
Регистрация: 04.03.2017
Сообщений: 18

Сообщение от ksa Посмотреть сообщение
alex-tiesto, у тебя
id="radio"

повторяется у многих элементов... ИД должно быть уникально на странице.
Я же написал что id и label генерируется скриптом, чтобы они уникальными были
Ответить с цитированием
  #6 (permalink)  
Старый 15.03.2017, 18:07
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

Сообщение от alex-tiesto
value у инпутов есть, не ту верстку скинул
И где же они тут имеются?

<input id="radio3" name="wrapper_all_radio1" type="radio">
     <label for="radio3"><span></span>23 см</label><span class="price_tovar_item">8.5 руб.</span>


Я так понимаю, что в форму, которая тоже хрен знает чем оперирует, нужно взять не значение кнопки, ибо его и близко нет в них, а текст ее метки и это впялить в форму?

Очередной магазин торгующий по принципы абы было?
Ответить с цитированием
  #7 (permalink)  
Старый 15.03.2017, 22:16
Интересующийся
Отправить личное сообщение для alex-tiesto Посмотреть профиль Найти все сообщения от alex-tiesto
 
Регистрация: 04.03.2017
Сообщений: 18

value там прописаны тестово только для первого товара.

Касаемо магазина торгующего абы чем.. там вообще-то пиццерия ))


Буду рад за помощь!
Ответить с цитированием
  #8 (permalink)  
Старый 15.03.2017, 22:30
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

Сообщение от alex-tiesto
value там прописаны тестово только для первого товара.
Да, есть такое, и это еще можно как-то переварить, хотя всего для трех значений для всех товаров выгоднее иметь ENUM значения, и в качестве value, следовательно, значения от 1 до 3. А 23 см - 36 см, это текстовое представление этих значений, которое будут как раз отображать label. Это к тому, что такое проверить легче.

А проверять надо потому, что формой в магазине нормальном, а не торгующем абы как, и не важно чем, хоть кирпичами, никогда не станут принимать "Название пиццы 1" и подобное, а исключительно идентификатор товара или артикул, или еще что либо уникальное определяющее товар в базе. Ваша же форма вполне скушает от заказчика и "Хрень какая-то".

Вот что значит абы как.
Ответить с цитированием
  #9 (permalink)  
Старый 15.03.2017, 23:47
Интересующийся
Отправить личное сообщение для alex-tiesto Посмотреть профиль Найти все сообщения от alex-tiesto
 
Регистрация: 04.03.2017
Сообщений: 18

Сообщение от laimas Посмотреть сообщение
Да, есть такое, и это еще можно как-то переварить, хотя всего для трех значений для всех товаров выгоднее иметь ENUM значения, и в качестве value, следовательно, значения от 1 до 3. А 23 см - 36 см, это текстовое представление этих значений, которое будут как раз отображать label. Это к тому, что такое проверить легче.

А проверять надо потому, что формой в магазине нормальном, а не торгующем абы как, и не важно чем, хоть кирпичами, никогда не станут принимать "Название пиццы 1" и подобное, а исключительно идентификатор товара или артикул, или еще что либо уникальное определяющее товар в базе. Ваша же форма вполне скушает от заказчика и "Хрень какая-то".

Вот что значит абы как.
Замечания я Ваши понял, но в моем случае как лучше поступить?

Пример скрипта можете написать?
Ответить с цитированием
  #10 (permalink)  
Старый 16.03.2017, 04:57
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

Сообщение от alex-tiesto
Пример скрипта можете написать?
Вы сперва разберитесь с багами существующего кода. )

То есть, если по уму, без глупостей "Название пиццы 1" и подобных, то не только серверу легче будет, но и клиенте, так как ему придется оперировать не с кучей абстрактных наборов ID и классов, а всего лишь с элементами текущей формы, коих немного и они конкретно определены. А значит "пример кода" будет базироваться совсем на ином.

Код написанный требует отладки, и если бы вы такое делали, то в коде под jQuery 1.11.0 такого бы не было, сразу после первой же отладки:

$(".radio_wrapper").live("change", function() {
        $("#value_product_2").val($(this).find("input[type=radio]:checked").attr("value"));
    });


Так как метода .live() в этой версии JQ нет. Но даже если бы и был, или же как положено для этой версии использовался метод .on(), сама по себе задача описывающее это мягко выражаясь глупа для этого HTML:

<div class="wrapper_all_radio0">
                            <div class="radio_wrapper">
                                <input id="radio0" name="wrapper_all_radio0" value="23 см" type="radio">
                                <label for="radio0"><span></span>23 см</label><span class="price_tovar_item">8.5 руб.</span>
                            </div>
                             <div style="clear: both"></div>
                            <div class="radio_wrapper">
                                <input id="radio1" name="wrapper_all_radio0" value="30 см" type="radio">
                                <label for="radio1"><span></span>30 см</label><span class="price_tovar_item">30 руб.</span>
                            </div>
                            <div style="clear: both"></div>
                            <div class="radio_wrapper">
                                <input id="radio2" name="wrapper_all_radio0" value="36 см" type="radio">
                                <label for="radio2"><span></span>36 см</label><span class="price_tovar_item">15 руб.</span>
                            </div>
                            </div>


В данном случае нужно делегировать обработку изменения состояний кнопок их общему родителю wrapper_all_radio, убрав добавление к этим именам классов числовых значений, это пустое и не нужное.

Назначать же обработчики как впрочем и описывать все остальное, нужно не кучей кусков <script></script>, а в одном скрипте, по событию $(function().

А помещать $(????).find("input[type=radio]:checked").attr("value"), только не attr, а .val(), ибо это не атрибут, а свойство, во что-то нужно в обработчике щелчка по кнопке заказать:

$(function() {
    $('a.tovar_item_link').click(function() {
        $(this).closest('tovar_desc').find('input:radio:checked').val(); //это выбранное значение в текущей группе кнопок
        $("#value_product_2"). //а это что за хрень?
    });
})
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Событие на input radio redwert Элементы интерфейса 3 23.09.2014 09:45
Как передать значение переменной? maksbp22 Общие вопросы Javascript 0 11.10.2013 16:21
input radio при выборе передавать значения в скрипт portalamur AJAX и COMET 16 19.09.2013 22:14
Передать значение из html в js Mateus jQuery 3 24.12.2012 18:58
Копирование из одного input в другой input bar-boss Общие вопросы Javascript 7 08.04.2008 19:10