简体   繁体   中英

Paper-dropdown-menu validation inside a iron-form in Polymer 2

i am trying to handle a paper-dropdown-menu inside a iron-form in Polymer 2. I found an example made with Polymer 1:

    <form is="iron-form" method="get" action="/" id="basic">
      <paper-input name="name" label="Name" required></paper-input>
      <br>
      <input type="checkbox" name="food" value="donuts" checked> I like donuts<br>
      <input type="checkbox" name="food" value="pizza" required> I like pizza<br>
      <paper-checkbox name="food" value="cheese" required>I like cheese</paper-checkbox><br>
      <paper-dropdown-menu label="Cars" name="cars" required>
        <paper-menu class="dropdown-content">
          <paper-item value="volvo">Volvo</paper-item>
          <paper-item value="saab">Saab</paper-item>
          <paper-item value="fiat">Fiat</paper-item>
          <paper-item value="audi">Audi</paper-item>
        </paper-menu>
      </paper-dropdown-menu>
      <paper-button raised onclick="_submit(event)">Submit</paper-button>
      <paper-button raised onclick="_reset(event)">Reset</paper-button>
      <div class="output"></div>
    </form>

My aim is to validate inside the form that a submit can only be performed when the user has choosen an item of the paper-dropdown-menu. How can i achieve this behaviour in Polymer2?

First of all you need to remove get method if you want to send a body not in browser url. Your code will looks like that:

<form is="iron-form" id="basic">
  <paper-input name="name" label="Name" required></paper-input>
  <br>
  <input type="checkbox" name="food" value="donuts" checked> I like donuts<br>
  <input type="checkbox" name="food" value="pizza" required> I like pizza<br>
  <paper-checkbox name="food" value="cheese" required>I like cheese</paper-checkbox><br>
  <paper-dropdown-menu label="Cars" name="cars" required>
    <paper-menu class="dropdown-content">
      <paper-item value="volvo">Volvo</paper-item>
      <paper-item value="saab">Saab</paper-item>
      <paper-item value="fiat">Fiat</paper-item>
      <paper-item value="audi">Audi</paper-item>
    </paper-menu>
  </paper-dropdown-menu>
  <paper-button raised on-tap="_submit">Submit</paper-button>
  <paper-button raised on-tap="_reset">Reset</paper-button>
  <div class="output"></div>
</form>

Your listeners for form submit and reset also must have a code similar to it:

        _submit: function () {
            //select your form and call validate method on it
            var form = this.$.basic;
            var validForm = form.validate();
            if (validForm) {
                //get ajax element, set right body and send request
                //var ajax = this.$.ajax;
                //ajax.body = form.serialize();
                //ajax.generateRequest();
            }
        },
        _reset: function () {
            //select your form and call reset method on it
            this.$.basic.reset();
        }

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM