AMP form selection How do I get the value of a data attribute?

Hello!

I am using the amp-bind method. In the AMP form, I track the change of a selection event. Then I change the value of the page element.

All this works great, for example:

<script async src="https://cdn.ampproject.org/v0.js"></script>
<script async custom-element="amp-form" src="https://cdn.ampproject.org/v0/amp-form-0.1.js"></script>
<script async custom-element="amp-bind" src="https://cdn.ampproject.org/v0/amp-bind-0.1.js"></script>

<form method="post" action-xhr="#">
  <select name="items-select" on="change:AMP.setState({item: event.value})">
    <option value="Milk">Milk</option>
    <option value="Chocolate">Chocolate</option>
    <option value="Cookies">Cookies</option>
  </select>
</form>

<p [text]="'Field Value: ' + item">Field Value: secret</p>
Run codeHide result

My question is this: How do I know the values ​​of a data attribute?

For instance:

<script async src="https://cdn.ampproject.org/v0.js"></script>
<script async custom-element="amp-form" src="https://cdn.ampproject.org/v0/amp-form-0.1.js"></script>
<script async custom-element="amp-bind" src="https://cdn.ampproject.org/v0/amp-bind-0.1.js"></script>

<form method="post" action-xhr="#">
  <select name="items-select" on="change:AMP.setState({item: event.value})">
    <option data-id="1" data-name="item-4453" data-discount="0" value="Milk">Milk</option>
    <option data-id="2" data-name="item-4454" data-discount="1" value="Chocolate">Chocolate</option>
    <option data-id="3" data-name="item-4455" data-discount="1" value="Cookies">Cookies</option>
  </select>
</form>

How to get the value of all data for the selected item?

Thank!

+4
source share
1 answer

        <script async src="https://cdn.ampproject.org/v0.js"></script>
        <script async custom-element="amp-form" src="https://cdn.ampproject.org/v0/amp-form-0.1.js"></script>
        <script async custom-element="amp-bind" src="https://cdn.ampproject.org/v0/amp-bind-0.1.js"></script>
        
        <form method="post" action-xhr="#">
          <select name="items-select" on="change:AMP.setState({item: event.value})">
            <option value="1,Milk">Milk</option>
            <option value="2,Chocolate">Chocolate</option>
            <option value="3,Cookies">Cookies</option>
          </select>
        </form>
        
        <p [text]="'Field Value: ' + item.split(',')[0] + ' Field Name: ' + item.split(',')[1]">Field Value: 1 Field Name: Milk</p>
Run codeHide result

EDIT: It turns out that you need to do a lot easier than using <amp-selector>. There is currently no way to set data from multiple attributes. However, you can use a comma ,  or semicolon ;(depending on what suits you)

+4
source

Source: https://habr.com/ru/post/1687739/


All Articles