【发布时间】:2018-10-06 23:09:12
【问题描述】:
我有一个电子邮件字段
<template>
<v-form v-model="valid">
<v-text-field
label="Name"
v-model="name"
:rules="nameRules"
:counter="10"
required
></v-text-field>
<v-text-field
label="E-mail"
v-model="email"
:rules="emailRules"
></v-text-field>
</v-form>
</template>
和验证规则,
<script>
export default {
data: () => ({
valid: false,
name: '',
nameRules: [
v => !!v || 'Name is required',
v => v.length <= 10 || 'Name must be less than 10 characters'
],
email: '',
emailRules: [
v => /^\w+([.-]?\w+)*@\w+([.-]?\w+)*(\.\w{2,3})+$/.test(v) || 'E-mail must be valid'
]
})
}
</script>
但它会在我提交表单时验证表单,我只需要在 email.length>0 时验证电子邮件。即email不是必填字段,但如果是email typed,则必须是validate。
也试过了,
当我像这样在脚本中更改:rules="[emailRules.em]"时
emailRules: {
em:v => {
if(v.length > 0 && /^\w+([.-]?\w+)*@\w+([.-]?\w+)*(\.\w{2,3})+$/.test(v) )
return ''E-mail must be valid';
return true;
}
}
它总是返回 true
【问题讨论】:
-
您将编写一个简单的函数并将其嵌套在代码中,以便它仅在电子邮件长度不为 0 时执行,例如。您是否对使用此类代码的编程语法有疑问?还是一般的方法去搞?或者是你有这样的功能,但它没有按照你期望的方式工作?我认为这个问题并不清楚。
-
嗨@onlyphantom,我编辑了代码,这里的电子邮件验证在提交时有效,即使我没有输入任何电子邮件。但只有当电子邮件的格式不正确时,我才需要验证。
-
为什么不使用简单的 inpuyt Email required 属性,如下例所示:
var x = document.getElementById("myEmail").required; -
嗨@EmileCantero,我不需要电子邮件作为必填字段,如果输入电子邮件则只需要格式验证
标签: vue.js vuetify.js