dart - 如何在 Dart 聚合物元素上使用HTML5验证?

标签 dart dart-polymer

我正在尝试创建自己的自定义聚合物元素,以强制执行指定的输入蒙版。我创建了这个元素:

<polymer-element name="phone-input" attributes="phoneNumber">
  <template>
    <form>
    <input id="txtPhoneNumber" type="text" class="field phone-field"
    required placeholder="999-999-9999" maxlength="12" value="{{ phoneNumber }}"/>
    </form>
  </template>
  <script type="application/dart" src="phone_input.dart"></script>
</polymer-element>

如您所见,我元素内的输入字段标记为required属性。因此,当我将电话输入元素放入表单中时,我希望它能够强制执行此约束。

<form name="testForm">
  <phone-input id="myPhoneInput"></phone-input>
  <button value="" id="btnTest">Test</button>
</form>

但是,当我这样做时,即使我的字段中没有值,我也可以随意发布该表单。

我设法确保在字段为空时弹出错误消息的唯一方法是在电话输入聚合物元素中包含表单和按钮,如下所示:

<polymer-element name="phone-input" attributes="phoneNumber">
  <template>
    <form>
    <input id="txtPhoneNumber" type="text" class="field phone-field"
    required placeholder="999-999-9999" maxlength="12" value="{{ phoneNumber }}"/>
    <button value="" id="btnTest">Test</button>
    </form>
  </template>
  <script type="application/dart" src="phone_input.dart"></script>
</polymer-element>

这项工作可行,但我的最初目标是创建一个电话输入元素,该元素可以单独使用,并可以以任何形式包含在内...

您知道我想做的事情是否完全可能吗,如果可以,我在做什么错呢?谢谢!

最佳答案

只需添加一个ID并在表单标签上提交,然后将按钮声明为“提交”按钮即可:

<polymer-element name="phone-input" attributes="phoneNumber">
  <template>
    <form id="myform" onsubmit="return false;">
    <input id="txtPhoneNumber" type="text" class="field phone-field"
    required placeholder="999-999-9999" maxlength="12" value="{{ phoneNumber }}"/>
    <button type="submit" on-click="saveform" value="" id="btnTest">Test</button>
    </form>
  </template>
  <script type="application/dart" src="phone_input.dart"></script>
</polymer-element>

将saveform-handler添加到phone_input.dart:

saveform(Event e, var detail, var target) {

  FormElement form = shadowRoot.query('#myform');
  if (!form.checkValidity()) {
    return;
  }

  // handle save
}

单击按钮激活html5表单验证,还可以调用saveform处理程序

关于dart - 如何在 Dart 聚合物元素上使用HTML5验证?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19599408/

相关文章:

dart - 模拟build_runner在nodeJs服务器上服务

flutter - flutter 如何在获取快照的属性值时防止空值

dart - 如何从外部调用 polymer 元素实例的方法?

dart - 获取在 Dart 中使用 <polymer-element> 创建的自定义元素的宽度?

dart - 检查聚合物元件内的按键类型?

django - Assets 的 Dart 绝对 URL。或者在单独的服务器/文件夹上提供 Assets

authentication - 如何在Flutter中使用流转换器根据另一个输入字段的值验证输入

flutter - Flutter Auth(BLoC模式和rxDart)?

dart - 有没有一种方法可以通过一个按钮一次控制在不同时间在同一 route 以不同方式显示两个小部件?

dart - 在Dart Polymer中动态导入HTML模板