Forms 聚合:防止在输入无效时提交表单
我有一个组件,它封装了Forms 聚合:防止在输入无效时提交表单,forms,validation,polymer,polymer-1.0,Forms,Validation,Polymer,Polymer 1.0,我有一个组件,它封装了纸张输入,如您在以下代码中所见: <dom-module id="my-p"> <template> <div class="my-class> <paper-input type="number" value="{{value}}" name="{{name}}" error-message="Error"
纸张输入
,如您在以下代码中所见:
<dom-module id="my-p">
<template>
<div class="my-class>
<paper-input
type="number"
value="{{value}}"
name="{{name}}"
error-message="Error"
invalid="{{invalid}}"
label="{{name}}"
allowed-pattern="[0-9,]"
required="{{required}}"></paper-input>
</div>
</template>
<script>
Polymer({
is: 'my-p',
properties: {
name: String,
value : {
type: Number,
notify : true
},
required : Boolean,
invalid: {
type: Boolean,
value: false,
notify: true
},
}
});
</script>
</dom-module>
不要使用按钮
,而是调用自己的函数,手动检查表单是否有效,然后手动提交表单
iron form
具有validate
功能,但我认为ti在这里不起作用,因为您使用的是封装纸输入。幸运的是,paper-input
也有submit
函数,因此您可以在每个my-p
元素上调用此函数
例如:
<form is="iron-form" id="form" method="get">
<my-p name="my input 1" value="{{value1}}" required></my-p>
<paper-input name="paper" type="number" label="paper" required="true"></paper-input>
<paper-button raised on-tap="checkAndSendForm">Send</paper-button>
</form>
在my-p
元素中,您必须定义函数validate
,该函数将在纸张输入上调用另一个validate
函数
validate() {
this.querySelector("paper-input").validate(); // validate paper-input
}
我还建议您在my-p
元素中的required
属性上设置reflect to attribute
。但这只是因为我使用了选择器querySelectorAll(“my-p[required]”)代码>
不要使用按钮
,而是调用自己的函数,手动检查表单是否有效,然后手动提交表单
iron form
具有validate
功能,但我认为ti在这里不起作用,因为您使用的是封装纸输入。幸运的是,paper-input
也有submit
函数,因此您可以在每个my-p
元素上调用此函数
例如:
<form is="iron-form" id="form" method="get">
<my-p name="my input 1" value="{{value1}}" required></my-p>
<paper-input name="paper" type="number" label="paper" required="true"></paper-input>
<paper-button raised on-tap="checkAndSendForm">Send</paper-button>
</form>
在my-p
元素中,您必须定义函数validate
,该函数将在纸张输入上调用另一个validate
函数
validate() {
this.querySelector("paper-input").validate(); // validate paper-input
}
我还建议您在my-p
元素中的required
属性上设置reflect to attribute
。但这只是因为我使用了选择器querySelectorAll(“my-p[required]”)代码>
Kuba,querySelectorAll
函数不返回任何内容。好的,然后您可以使用Polymer.dom(this.root)。querySelectorAll
如果不返回任何内容,则选择器中存在错误。所以只要试着只设置Polymer.dom(this.root).querySelectorAll(“我的应用”)
,并告诉它是否有效。伙计,你得自己试试。我不会指导您完成所有操作:)Kuba,querySelectorAll
函数不返回任何内容。好的,然后您可以使用Polymer.dom(this.root)。querySelectorAll
如果它不返回任何内容,则选择器中存在错误。所以只要试着只设置Polymer.dom(this.root).querySelectorAll(“我的应用”)
,并告诉它是否有效。伙计,你得自己试试。我不会指导你完成一切:)
required: {
type: Boolean,
reflectToAttribute: true
}