uni微信小程序input框过滤中文字节以及规定以外的符号

问题描述

需求是输入账号只能为手机号、邮箱、字母和数字组成的字符串,那么就是所有大小写字母、数字、以及符号 - _ @ . 四种。

条件限制

  • 微信小程序无法直接通过type属性实现,type属性中没有专门为只允许英文字母的输入类型。详情见input | uni-app官网
  • 微信小程序不支持直接操作dom,因为他没有传统意义上的DOM。

问题分析

使用正则过滤数据,但是如果是使用的动态绑定的话,直接把过滤后的值赋给input框动态绑定的值输入框还是可以出现中文。会出现我开始输入中文然后input框可以看见,然后输入英文,中文被删除了如下。

错误代码

HTML

html 复制代码
<input class="item_left account" placeholder="官方账号" :value="accountValue" maxlength=20  @input="inputAccount">

JS

javascript 复制代码
<script>
	export default {
		data() {
			return {
				accountValue: '', //账号输入框
			}
		},
		methods: {
			// 输入账号
			inputAccount(e) {
				this.accountValue = e.detail.value.replace(/[^a-zA-Z0-9\-@_.]/g, '');
			},
		}
	}
</script>

解决方法

使用 @input 事件处理函数并从该函数中返回一个值。在微信小程序中,input 组件的 input 事件处理函数可以返回一个值,这个返回值将直接影响输入框的当前值。如果你在事件处理函数中返回一个经过处理(如过滤操作)的字符串,那么输入框的显示将被更新为这个返回的字符串。

如果不返回值会怎么样?

如果你的事件处理函数不返回任何值,或者返回的是 undefined,那么输入框的内容将不会被强制更改为你在函数中设置的过滤后的值。这种情况下:

  • 用户输入的内容(包括中文或其他不被允许的字符)将显示在输入框中,因为没有返回值去覆盖用户的输入。
  • 尽管你可能在事件处理函数中已经将动态绑定的值设置为过滤后的值,但因为没有返回这个值,输入框的显示内容不会同步更新,仍然显示用户原始输入的内容。

正确代码

html

html 复制代码
<input class="item_left account" placeholder="官方账号" :value="accountValue" maxlength=20  @input="inputAccount">

js

javascript 复制代码
<script>
	export default {
		data() {
			return {
				accountValue: '', //账号输入框
			}
		},
		methods: {
			// 输入账号
			inputAccount(e) {
                // 过滤掉所有双字节字符(包括汉字)和非法符号
				this.accountValue = e.detail.value.replace(/[^a-zA-Z0-9\-@_.]/g, '');
				return this.accountValue
			},
		}
	}
</script>
相关推荐
流***陌3 小时前
用工招聘小程序:功能版块与前端设计解析
前端·小程序
Goona_3 小时前
PyQt数字转大写金额GUI工具开发及财务规范实现
python·小程序·交互·pyqt
文心快码BaiduComate5 小时前
我用Comate搭建「公园找搭子」神器,再也不孤单啦~
前端·后端·微信小程序
CocoaKier8 小时前
AI让35岁程序员再次伟大
ios·微信小程序·aigc
2501_915909069 小时前
苹果上架App软件全流程指南:iOS 应用发布步骤、App Store 上架流程、uni-app 打包上传与审核技巧详解
android·ios·小程序·https·uni-app·iphone·webview
2501_915921439 小时前
iOS 文件管理与能耗调试结合实战 如何查看缓存文件、优化电池消耗、分析App使用记录(uni-app开发与性能优化必备指南)
android·ios·缓存·小程序·uni-app·iphone·webview
2501_915918419 小时前
App 苹果 上架全流程解析 iOS 应用发布步骤、App Store 上架流程
android·ios·小程序·https·uni-app·iphone·webview
2501_9160074710 小时前
苹果上架全流程详解,iOS 应用发布步骤、App Store 上架流程、uni-app 打包上传与审核要点完整指南
android·ios·小程序·https·uni-app·iphone·webview
ZZHow102410 小时前
微信小程序开发笔记(01_小程序基础与配置文件)
笔记·微信小程序·小程序
皮皮冰燃10 小时前
微信小程序-1-微信开发者工具环境搭建和初始化创建项目
微信小程序·小程序