Передать значение в форму

254
13 марта 2018, 01:20

Есть страница категории товаров. У каждого есть ID - product ['id'], название - product['name'], цена - product['price']. У каждого товара есть кнопка <button class="opener"> </button>

Есть html форма, в которую нужно передать название товара и его цену.

Есть скрипт на jquery - использующий какую-то стандартную библиотеку "dialog", который скрывает форму до момента нажатия на кнопку и открывает после нажатия.

Задача: при нажатии на кнопку открывается форма во всплывающем окне, и в соответствующие поля формы записываются значения цены и названия.

Привожу код(с купюрами для экономии места):

Продукт:

<?php foreach ($products as $product) { ?>
<div class="name"><a href="<?php echo $product['href']; ?>"><?php echo $product['name']; ?></a></div>
  <div class="price"> 
        <?php if (!$product['special']) { ?>
        <span class="regprice"><?php echo $product['price']; ?></span>
        <?php } else { ?>
        <span class="price-old"><?php echo $product['price']; ?></span> <span class="price-new"><?php echo $product['special']; ?></span>
        <?php } ?>
</div>
<button class="opener">Кнопка</button>

Jquery:

<link href="//code.jquery.com/ui/1.12.1/themes/base/jquery-ui.css" rel="stylesheet" />
      <script> 
  $( function() {
      $( "#form" ).dialog({
      autoOpen: false,
      width: 500,
      title: "Форма",
      closeText: "",
      show: {
        effect: "blind",
        duration: 500
      },
      hide: {
        effect: "blind",
        duration: 500
      }
    }); 
   }

    $( ".opener" ).on( "click", function() {
      $( "#form" ).dialog( "open");
    });
  } );
  </script>

Форма:

<div id="form">
<form action="http://example.com/action.php" method="post">
<input name="itemName" value="##здесь должно быть имя товара##" type="hidden"/>
<input name="itemQuantity" value="1" type="hidden"/>
<input name="itemPrice" value="##Здесь должна быть цена товара##" type="hidden"/>
<input type="submit" value="Submit"/>
</form>
</div>     
Answer 1

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

$( ".opener" ).on( "click", function() {
  $( "input[name='itemName']" ).val( "Твое наименование" );
  $( "input[name='itemPrice']" ).val( "Твоя цена" );
  $( "#form" ).dialog( "open");
});

Но лучше испольвать поиск не по имени, а по классу или ID.

<input class="itemName" type="hidden"/>

Или

<input id="itemName" type="hidden"/>
Answer 2

При отрисовке всех элементов сохраняй их необходимые значения в data атрибуты, вот документация и здесь.

<div class="item" data_name="Записываем имя" data_price="Записываем стоимтость"/>

А в при нажатии кнопки забирай значения из текущего элемента c помощью js.

$(".item").click(function(){
   var name = $(this).data("name");
   var price = $(this).data("price");
});
READ ALSO
на сайте нету стилей

на сайте нету стилей

Прошу помощиСделал структуру сайта

179
Цветовая математика в JavaScript

Цветовая математика в JavaScript

Используя Less можно делать операции над цветами, например darken("red",10%)

202
Меню с SVG фильтрами (Goo effect)

Меню с SVG фильтрами (Goo effect)

Есть меню, которое реализовано на HTML/CSSМне пришла идея сделать его совместно с SVGфильтрами, а конкретно с эффектом "вязкости" (Goo) для каждого...

248
Фон, вылезающий за обложку

Фон, вылезающий за обложку

Как сделать этот синий фон в логотипе, который вылезает слева за wrapper?

175