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>
相关推荐
知识分享小能手6 小时前
微信小程序入门学习教程,从入门到精通,WXML(WeiXin Markup Language)语法基础(8)
前端·学习·react.js·微信小程序·小程序·vue·个人开发
小咕聊编程6 小时前
【含文档+PPT+源码】基于微信小程序的在线考试与选课教学辅助系统
微信小程序·小程序·毕业设计·教学辅助系统
一匹电信狗6 小时前
【MySQL】数据库基础
linux·运维·服务器·数据库·mysql·ubuntu·小程序
知识分享小能手8 小时前
微信小程序入门学习教程,从入门到精通,微信小程序开发进阶(7)
前端·javascript·学习·程序人生·微信小程序·小程序·vue3
2501_9159090610 小时前
iOS 抓包工具有哪些?实战对比、场景分工与开发者排查流程
android·开发语言·ios·小程序·uni-app·php·iphone
软希网分享源码19 小时前
WIFI大师小程序4.1.9独立版源码(源码下载)
小程序·wifi大师小程序
说私域19 小时前
互联网新热土视角下开源AI大模型与S2B2C商城小程序的县域市场渗透策略研究
人工智能·小程序·开源
小咕聊编程19 小时前
【含文档+PPT+源码】基于微信小程序的关爱老年人在线能力评估系统
微信小程序·小程序·毕业设计·老人能力评估
知识分享小能手1 天前
微信小程序入门学习教程,从入门到精通,微信小程序常用API(上)——知识点详解 + 案例实战(4)
前端·javascript·学习·微信小程序·小程序·html5·微信开放平台
2501_915918411 天前
iOS 框架全解析,原生框架与跨平台框架对比、开发应用打包与 App Store 上架实战经验
android·ios·小程序·https·uni-app·iphone·webview