@blur检验数组重复并对重复项加后缀

本文介绍了如何在input失去焦点(@blur)时,通过JavaScript校验表格中输入的数组值是否重复。当检测到重复值时,会自动为重复项添加'01', '02', '03'等后缀,以确保数组内的唯一性。" 46925161,1202846,Unity中Shader的使用与自定义教程,"['Unity3D', '图形渲染', '游戏开发', '3D建模', '编程']

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

@blur校验数组重复

使用场景
table嵌套input
input失去焦点时判断输入的所有值是否有重复项,并对重复项增加01,02,03的后缀
实现效果
在这里插入图片描述

JS部分

        data(){
        	return {
        		repeatTime:new Map([]) //记录每一项的重复次数
        	}
        }
        repeatZhName() {
            // 重复字段的中文名后加_01
            for (let i = 0; i < this.fieldInfoList.length - 1; i++) {
                for (let j = i + 1; j < this.fieldInfoList.length; j++) {
                    if (this.fieldInfoList[i].cnName != '' && this.fieldInfoList[j].cnName != '') {
                        if (this.fieldInfoList[i].cnName === this.fieldInfoList[j].cnName) {
                            // return this.$message.warning('字段中文名存在重复')
                            if (this.repeatTime.get(this.fieldInfoList[j].cnName) !== undefined) {
                                let num = this.repeatTime.get(this.fieldInfoList[j].cnName)
                                this.repeatTime.set(this.fieldInfoList[i].cnName, ++num)
                            } else {
                                this.repeatTime.set(this.fieldInfoList[i].cnName, 1)
                            }
                            let num = this.repeatTime.get(this.fieldInfoList[i].cnName)
                            num = num > 9 ? num : '0' + num
                            this.fieldInfoList[j].cnName = this.fieldInfoList[j].cnName + '_' + num
                        }
                    }
                }
            }
        }

HTML

<el-input
                        v-model="record.cnName"
                        :class="['text-input', { normal: pageType == 'check' }]"
                        placeholder="请输入"
                        :title="record.cnName"
                        :readonly="pageType == 'check'"
                        @blur="repeatZhName"
                    ></el-input>
### 关于 `@blur` 事件的使用方法 在 Vue.js 中,`@blur` 事件用于监听 HTML 元素失去焦点的情况。当用户点击页面上的其他位置或切换到另一个元素时,会触发该事件。 #### 基本语法 ```html <input type="text" @blur="handleBlur"> ``` 在此示例中,每当 `<input>` 元素失去焦点时就会调用名为 `handleBlur` 的函数[^2]。 #### 结合修饰符使用 可以将 `.prevent`, `.stop` 等修饰符与 `@blur` 联合起来增强功能: - 阻止表单提交中的默认行为: ```html <form> <input type="email" @blur.prevent="validateEmail"/> </form> ``` - 防止事件冒泡至父级组件: ```html <div id="parent-element"> <button @click="doSomething">@blur won't bubble up</button> <input type="password" @blur.stop="onBlurHandler"/> </div> ``` 这些例子展示了如何利用不同的修饰符来控制特定场景下的交互逻辑[^1]。 #### 实际应用场景 假设有一个登录界面,在密码字段上应用了 `@blur` 来检测提示错误信息: ```javascript methods: { checkPassword() { const passwordInput = this.$refs.password; if (!this.isValidPassword(passwordInput.value)) { alert('Invalid Password!'); // 手动设置 focus 返回给输入框以便修正 setTimeout(() => { passwordInput.focus(); },0); } }, isValidPassword(pwd){ return pwd.length >=8 && /\d/.test(pwd); } } ``` ```html <div class="login-form"> <!-- ... --> <label>Password:</label> <input ref="password" :type="'password'" placeholder="Enter your password..." v-model.trim="userPwd" @blur="checkPassword"> <!-- ... --> </div> ``` 这段代码会在用户离开密码输入区域后自动验证其有效性,给出即时反馈。 #### 解决常见问题 有时可能会遇到一些棘手的问题,比如多次快速点击可能导致重复触发 `@blur` 或者与其他事件冲突。为了处理这种情况,可以在方法内部入简单的防抖机制或者状态标记位防止不必要的重入。 另外值得注意的是,如果希望某些情况下不触发 `@blur` ,可以通过条件渲染的方式有条件地添这个监听器。 最后提醒一点,对于移动设备来说,触摸屏幕可能不会像桌面端那样直观地引起 `@blur` 。因此开发响应式网站时需特别留意这一点[^4]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值