jquery 允许在文本字段中使用特殊字符和空格

ecbunoof  于 12个月前  发布在  jQuery
关注(0)|答案(2)|浏览(117)

我有这个文本字段,只允许字符
我想在同一个onkeypress事件中允许特殊字符和空格。

<input maxlength="30" class="form-control" type="text" maxlength="30" formControlName="Name"
 onkeypress="return (event.charCode > 64 && event.charCode < 91) || (event.charCode > 96 && event.charCode < 123)">

字符串

smdnsysy

smdnsysy1#

正如@mandy8055所建议的那样,你可以使用正则表达式。我个人会使用事件代理,但也会使用正则表达式来删除粘贴的内容。
请记住在服务器上重复测试,因为用户可以轻松绕过客户端验证

const regex = /[A-Za-z\s!@#$%^&[\];':",.\/<>?\\-]/;
const validateInput = (event) =>  regex.test(String.fromCharCode(event.charCode));
const filterInput = (input) => input.value.split('').filter(char => regex.test(char)).join('');

const input = document.querySelector('[formControlName=Name]');
input.addEventListener('keypress', validateInput)
input.addEventListener('input', (e) => e.target.value = filterInput(e.target));

个字符

wh6knrhe

wh6knrhe2#

更简洁的方法是使用正则表达式来匹配允许的字符,而不是手动列出它们。类似于:

function validateInput(event) {
    // You can add other special characters(I might have missed) based on your requirement.
    const regex = /[A-Za-z\s!@#$%^&[\];':",.\/<>?\\-]/;
    const char = String.fromCharCode(event.charCode);
    return regex.test(char);
  }

个字符

相关问题