javascript - 如果字段为空并且用户正在尝试提交表单,如何使输入字段边框变为红色
问题描述
当字段为空并且用户尝试在不输入值的情况下提交表单时,我试图将输入字段边框设为红色。当用户尝试提交表单而不使用 vue.js 输入任何值时,字段边框应变为红色。在填写表格之前,表格不应提交。
html
<template>
<div id="border_red">
<input id="name" name="name" v-model="name"/>
<input id="name" name="name" v-model="age"/>
<input id="name" name="name" v-model="phone"/>
<input id="name" name="name" v-model="address"/>
<button>submit</button>
</div>
</template>
Vue.js
<script src="https://unpkg.com/vue@next"></script>
<script>
const app = Vue.createApp({
data() {
return {
name:null,
address:null,
age:'',
phone:'',
};
},
methods: {
}
}
});
app.mount('#border_red');
</script>
解决方案
一种解决方案是跟踪“提交”状态,并invalid
仅在提交时为空字段应用一个类,并使用红色边框对其进行样式设置:
为 .添加数据属性
isSubmitting
。export default { data() { return { isSubmitting: false } } }
在表单的
submit
处理程序中,设置isSubmitting
为 true。export default { methods: { submit() { this.isSubmitting = true } } }
对于每个输入,添加一个类绑定,当字段值为空时设置
invalid
类。isSubmitting
<input v-model="name" :class="{ invalid: isSubmitting && !name.trim() }"> <input v-model="age" :class="{ invalid: isSubmitting && !age.trim() }"> <input v-model="phone" :class="{ invalid: isSubmitting && !phone.trim() }"> <input v-model="address" :class="{ invalid: isSubmitting && !address.trim() }">
添加样式
.invalid
,设置border-color
为红色。<style> .invalid { border-color: red; } </style>
推荐阅读
- java - Java程序执行线程
- typescript - 如何在 Node.js 中声明默认导出的类型
- reactjs - 如何动态扩展或组合 Yup 模式
- c# - 在 ASP.NET MVC 中处理文件
- garbage-collection - 关于 GC 和 DisplayCompositor 的一些问题
- javascript - 如何使用 createelement 添加多个单元格?
- ios - ReactNative:在多行文本输入滚动时关闭键盘
- c# - 为什么 Gridview 的更新控件行为异常?
- javascript - 仅协议方案支持跨源请求。Node.js 服务器 Angular 前端
- php - Slim 框架:不允许方法 不允许方法。必须是以下之一: POST