ASP.NET中如何禁止在TextBox中粘贴特殊字符?
实现禁止粘贴特殊字符的方案
你可以通过添加onpaste事件拦截粘贴操作,验证粘贴内容是否符合允许的字符规则,具体修改如下:
方式1:内联验证(无需额外JS函数)
直接把验证逻辑写在onpaste属性中,和输入限制的正则保持一致:
@Html.TextBoxFor(model => model.GroupName, new { @class = "form-control", @required = "required", onkeypress = "return /[0-9a-zA-Z ]/i.test(event.key);", onpaste = "return /^[0-9a-zA-Z ]*$/i.test((event.clipboardData || window.clipboardData).getData('text'));" })
方式2:独立JS函数(更易维护)
如果需要复用验证逻辑,可单独定义JS函数,再绑定到onpaste事件:
第一步:修改TextBoxFor代码
@Html.TextBoxFor(model => model.GroupName, new { @class = "form-control", @required = "required", onkeypress = "return /[0-9a-zA-Z ]/i.test(event.key);", onpaste = "return validatePaste(event);" })
第二步:添加JS验证函数
function validatePaste(event) { // 获取剪贴板中的文本内容 const pastedContent = (event.clipboardData || window.clipboardData).getData('text'); // 验证内容是否仅包含数字、字母和空格 const allowedChars = /^[0-9a-zA-Z ]*$/i; // 符合规则则允许粘贴,否则阻止 return allowedChars.test(pastedContent); }
说明
两种方式都是通过正则表达式/^[0-9a-zA-Z ]*$/i验证内容,确保粘贴的文本只包含数字、大小写字母和空格,不符合规则的粘贴操作会被直接阻止,和你已有的输入限制逻辑保持一致。
内容的提问来源于stack exchange,提问作者sellavsert
相关产品推荐
相关产品推荐

