我正在使用带有vue.js的Laravel 5.6.7进行表单验证。我已使用npm install vee-validate@next --save
<form role="form">
<select name="Role_ID" v-validate data-vv-rules="required">
<option :value="-1" selected>Please select Role</option>
<option v-for="RoleRecord in RoleRecords" :value="RoleRecord.Role_ID">
{{RoleRecord.Role}}
</option>
</select>
<p v-if="errors.has('Role_ID')">{{ errors.first('Role_ID') }}</p>
<!-- UserName -->
<div>
<label>UserName</label>
<div class="col-md-9">
<input name="User Name" v-validate data-vv-rules="required" type="text"
v-model="createForm.UserName">
<p v-if="errors.has('User Name')">{{ errors.first('User Name') }}</p>
</div>
</div>
<button type="button" @click="validateBeforeSubmit()">
Save Changes
</button>
</form>
<script>
export default {
methods: {
validateBeforeSubmit() {
this.$validator.validateAll();
}
}
}
</script>
我的发现
如果选项选项值小于0
,我希望它应该显示错误消息我错过了什么吗?如果您需要更多信息,请与我们联系。
答案 0 :(得分:3)
,
验证字段必须具有非空值。默认情况下, 如果除非具有“空值”,则所有验证器都会通过验证 他们是必需的。那些空值是:空字符串,未定义, 空。
-1仍被视为18000
验证的有效值。请改用指定的required
。 (即:空字符串,empty values
,undefined
)
e.g。
null
这应该触发<option :value="null" selected>Please select Role</option>
验证。
答案 1 :(得分:0)
您的命名之间存在差异:
<input name="User Name" v-validate data-vv-rules="required" type="text" v-model="createForm.UserName">
<p v-if="errors.has('User Name')">{{ errors.first('User Name') }}</p>
v-model
使用UserName
(没有间距)。输入中的name-attribute和errors.has
+ errors.first
正在使用User Name
(带间距)。请确保在前端和后端(最好没有空格)命名完全相同的东西。