ari*_*iel 3 javascript validation vuejs2
如果我在 vue 上这样做:
<input pattern="\d+">
Run Code Online (Sandbox Code Playgroud)
它得到了正确的验证,但我收到一个弹出窗口,其中显示一条消息“请匹配请求的格式”。
有什么办法可以改变这个消息吗?我找不到有关接受的验证标签的文档。
JSFiddle: http: //jsfiddle.net/ovz5p3wt/
因此,正如评论中所指出的,这样做的方法是使用oninvalid和setCustomValidity
<input pattern="\d+" oninvalid="setCustomValidity('please use a number')">
Run Code Online (Sandbox Code Playgroud)
但是,如果您想使用脚本来完成此操作(因为您标记为 vue),这里是另一个解决方案,允许您动态更改可以使用脚本版本的值。不幸的@oninvalid是 vue 似乎不支持,所以你需要使用 $refs 设置功能
updateCustomValidity(lang){
var el = this.$refs.el;
el.oninvalid = el.setCustomValidity(this[lang].message);
}
Run Code Online (Sandbox Code Playgroud)
<input pattern="\d+" oninvalid="setCustomValidity('please use a number')">
Run Code Online (Sandbox Code Playgroud)
updateCustomValidity(lang){
var el = this.$refs.el;
el.oninvalid = el.setCustomValidity(this[lang].message);
}
Run Code Online (Sandbox Code Playgroud)
new Vue({
el: "#app",
data() {
return {
lang: 'en',
en: {
message: 'nope, sorry',
},
fr: {
message: 'sacre bleu'
}
}
},
watch: {
lang: {
handler(lang) {
this.updateCustomValidity(lang);
}
}
},
methods: {
updateCustomValidity(lang){
var el = this.$refs.el;
el.oninvalid = el.setCustomValidity(this[lang].message);
}
},
mounted() {
this.updateCustomValidity(this.lang);
}
})Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2331 次 |
| 最近记录: |