2

我正在测试使用iron-form自定义元素。我遇到的问题是当我按 Enter 时没有提交表单。例如,这里的表格适用于输入:

    <iron-form>
      <form id="loginForm">
        <paper-card heading="Welcome Back!" elevation="1" animated-shadow="true">
            <div class="card-content">
              <input type="text" label="Username" value="{{username}}">
              <input type="text" label="Password" value="{{password}}">
            </div>
            <div class="card-actions">
                <button disabled$="[[fetching]]" type="submit">Login</button>
            </div>
        </paper-card>
      </form>
    </iron-form>

我的 connectedCallback 方法中有一个事件监听器,用于监听iron-form-presubmit event

        connectedCallback() {
          super.connectedCallback();

          this.addEventListener('iron-form-presubmit', function(event) {
            event.preventDefault();
            alert('working')
          });
        }

问题是当我将 html 输入元素切换为纸张输入元素时,表单不再在输入时提交。

    <iron-form>
      <form id="loginForm">
        <paper-card heading="Welcome Back!" elevation="1" animated-shadow="true">
            <div class="card-content">
              <paper-input type="text" label="Username" value="{{username}}"></paper-input>
              <paper-input type="text" label="Password" value="{{password}}"></paper-input>
            </div>
            <div class="card-actions">
                <button disabled$="[[fetching]]" type="submit">Login</button>
            </div>
        </paper-card>
      </form>
    </iron-form>
4

1 回答 1

2

您可以在按下键<iron-a11y-keys>时调用提交方法。[enter]

<iron-a11y-keys target="loginForm" keys="enter" on-keys-pressed="submit"></iron-a11y-keys>
<iron-form id="loginForm">
...
</iron-form>

在您的自定义元素定义中,添加一个方法:

submit: function () {
    this.$.loginForm.submit();
}
于 2017-07-25T22:03:33.473 回答