点击聚合物v1.0输入验证按钮
Polymer v1.0 input validation on button click
这里对聚合物一窍不通,所以请耐心听我说。
我想学习如何创建一个表单,一个需要用户输入文本到文本框,然后点击"提交"。如果用户点击"提交"而文本框中没有任何内容,则文本框将突出显示红色,并显示错误信息等。
下面是我的代码(还没有验证):<dom-module id="accountability-ticket">
<template>
<paper-dialog with-backdrop entry-animation="scale-up-animation" exit-animation="fade-out-animation" id="diagTicket">
<h2>I Own It Ticket</h2>
<div>
<paper-input-container id="gcashDeco" required error="GCash Ref. Required">
<input id="gcashText" is="iron-input">
</paper-input-container>
<div class="ctrlButtons flex">
<paper-button dialog-dismiss>Cancel</paper-button>
<paper-button on-click="confirmClick">Submit</paper-button>
</div>
</div>
</paper-dialog>
</template>
</dom-module>
<script>
Polymer({
is: "accountability-ticket",
confirmClick: function(event){
console.log(event);
var gCashDeco = document.getElementById('gcashDeco');
var gCashText = document.getElementById('gcashText');
}
});
</script>
我一直在阅读聚合物文档,到目前为止,我想到了两件事:
-
<paper-input>
本身不验证,根据v0.5 -它必须首先包装在<paper-input-decorator>
中。 - 1.0版本甚至比这更不清楚,用
<paper-input-container>
代替<paper-input-decorator>
,并且在演示页面中混合了标签。
假设我想坚持使用最新版本(v1.0),我需要在代码中添加什么来检查文本框是否为空,如果是则显示错误消息?
谢谢。
是的,聚合物文档有点令人困惑,但作为一般的经验法则:总是要看看元素配备的行为。
因此,paper-input
(在1.0中)与PaperInputBehavior
一起出现,这意味着您可以简单地编写以下内容:
<paper-input label="Input label" required error-message="Field required!"></paper-input>
<paper-input label="Input label" minlength="4" maxlength="10" auto-validate></paper-input>
<paper-input label="Input label" pattern="MY_REGEX" auto-validate></paper-input>
<paper-input label="Input label" validator="myvalidator"></paper-input>
auto-validate
使输入——当然——在输入时进行验证。myvalidator
必须是一个实现IronValidatorBehavior
的元素,并且插入到页面的某个位置。如果你不想让字段自动验证或者想要自己验证,在该字段上调用validate()
或设置invalid
标志,错误消息将显示。
虽然validator
似乎很有用,但我发现它足够简单,可以直接测试输入。这将满足您的需要:
...
<div>
<paper-input-container id="gcashDeco">
<paper-input-error>Field is empty</paper-input-error>
<input id="gcashText" is="iron-input" value="{{gcashInput::input}}">
</paper-input-container>
<div class="ctrlButtons flex">
<paper-button dialog-dismiss>Cancel</paper-button>
<paper-button on-tap="confirmClick">Submit</paper-button>
</div>
</div>
...
...
Polymer({
is: "accountability-ticket",
confirmClick: function() {
if (this.gcashInput == null)
{
//show error
this.$.gcashDeco.invalid = true;
}
}
这个paper-input-error
元素由它所在的paper-input-container
的id引用。将invalid
属性设置为true
显示错误,false
隐藏错误。
<paper-input-error>Field is empty</paper-input-error>
下一个代码片段将字段的输入值绑定到变量this.gcashInput
,您可以在confirmClick
或任何其他方法中访问该变量。
{{gcashInput::input}}
作为最后一个注意事项,获得您的聚合物元素内部的元素的id是这样做的:
this.$.gcashDeco
不是你使用普通Javascript的方式:
document.getElementById('gcashDeco');
后者(普通的JS方式)将搜索主DOM,而不是元素所在的Shadow DOM。因此,如果您需要搜索DOM,请使用document.getElementById()
,如果您需要搜索元素的id,请使用this.$.elemendId
。
- 是否有一种方法可以使用公共代码库在Java和JavaScript中进行输入验证
- 输入验证&使用javascript或asp返回
- 带有输入验证的Javascript
- 表单和输入验证
- 输入验证仅在lur上
- 使用jQuery进行输入验证
- 如何在 JavaScript 中将输入验证为数字
- 使用正则表达式进行输入验证
- Int 输入验证 - 解析服务器云代码
- jQuery/JS 输入验证
- 使用 Angular 要求输入启用注册:需要输入/验证
- 比较输入验证HTML JavaScript中的两个输入值
- simpleCart(js)将表单输入验证添加到电子邮件结账提交中
- Javascript:输入验证
- 淘汰计算和输入验证
- 使用javascript addevent监听器在引导程序html表单上输入验证
- 使用JavaScript进行输入验证
- HTML 5表单输入验证
- 禁用输入类型=数字的输入验证
- AngularJs表单中的输入验证