gpt4 book ai didi

javascript - 仅当用户完成输入时如何使用 Vuelidate 显示错误

转载 作者:行者123 更新时间:2023-12-03 07:13:28 27 4
gpt4 key购买 nike

我使用 Bootstrap-Vue 构建了以下表单,其中应用了一些 Vuelidation 代码。

<b-form @submit.prevent="onSubmit">
<input type="hidden" name="_token" :value="csrf" />
<transition-group name="fade">
<b-form-select
:class="{ 'hasError': $v.form.dobDate.$error }"
class="mb-3"
name="dobDate"
id="dobDate"
v-model.lazy="$v.form.dobDate.$model"
:options="optionsDays"
v-if="isSixteen"
key="dobDateSelect"
>
<template slot="first">
<option value disabled>Please select a date</option>
</template>
</b-form-select>
</transition-group>
<transition-group name="fade">
<b-form-select
:class="{ 'hasError': $v.form.dobMonth.$error }"
class="mb-3"
name="dobMonth"
id="dobMonth"
v-model.lazy="$v.form.dobMonth.$model"
:options="optionsMonths"
v-if="isSixteen"
value="optionsMonths.key"
key="dobMonthSelect"
>
<template slot="first">
<option value disabled>Please select a Month</option>
</template>
</b-form-select>
</transition-group>

<b-alert
show
variant="danger"
class="error"
v-if="!$v.form.dobYear.required"
>This field is required</b-alert>

<b-alert
show
variant="danger"
class="error"
v-if="!$v.form.dobYear.minLength"
>Field must have at least {{ $v.form.dobYear.$params.minLength.min }} characters.</b-alert>

<b-alert class="error" v-if="!$v.form.dobYear.numeric">Please enter a valid year of birth</b-alert>

<b-alert show variant="danger" v-if="belowSixteen">You are underage</b-alert>

<b-form-input
:class="{ 'hasError': $v.form.dobYear.$error }"
placeholder="Year of Birth"
v-model="form.dobYear"
@blur="$v.form.dobYear.$touch()"
autofocus
class="form-control mb-3"
name="year"
id="year"
maxlength="4"
@keyup="checkAge"
></b-form-input>

<b-button
class="btn btn-lg btn-primary btn-block"
type="submit"
variant="primary"
:disabled="$v.$invalid||belowSixteen"
>Submit</b-button>
<b-alert
show
variant="danger"
v-if="belowSixteen"
class="error mt-3"
>Sorry you have to be over 16 to play</b-alert>
</b-form>

但是目前,当页面加载时,我会立即得到反馈,这可能会让用户感到不安。相反,我希望在用户完成输入/选择时显示错误。

我曾尝试使用 @blur="$v.form.dobYear.$touch()"但它似乎根本不起作用。我究竟做错了什么?

这是我的验证在我的脚本中的样子的截图:
validations: {
form: {
dobYear: {
required,
minLength: minLength(4),
maxLength: maxLength(4),
numeric
},
dobMonth: {
required: requiredIf(function() {
return this.isSixteen;
})
},
dobDate: {
required: requiredIf(function() {
return this.isSixteen;
})
}
}
}

最佳答案

调用$touch()blur事件是对的。但是你可以使用稍微不同的逻辑 state bootstrap-vue 给出的属性。您可以从这里找到更多详细信息 Form input [contextual states]
例如:

<b-form-input
v-model="form.name"
type="text"
@blur="$v.form.name.$touch()"
:state="$v.form.name.$dirty ? !$v.form.name.$anyError : null"
/>
<b-form-invalid-feedback :state="$v.form.name.$dirty ? !$v.form.name.$anyError : null" >
Some kind of invalid feedback Message here
</b-form-invalid-feedback>


出于好奇,您为什么使用 v-model使用如下所示的验证模型。 v-model.lazy="$v.form.dobMonth.$model"用不就好了吗 v-modeldata()如下图所示? v-model.lazy="form.dobMonth"

关于javascript - 仅当用户完成输入时如何使用 Vuelidate 显示错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57786179/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com