Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/401.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 编写此代码的更简洁的方法[限制<;输入>;上的字符]_Javascript_Html - Fatal编程技术网

Javascript 编写此代码的更简洁的方法[限制<;输入>;上的字符]

Javascript 编写此代码的更简洁的方法[限制<;输入>;上的字符],javascript,html,Javascript,Html,通过浏览stackoverflow,我成功地在我的 onkeyup=“this.value=this.value.replace(/[qwertyuopasdfghjklzxcvnm]/g,”)“ 我打算限制键盘,但字母i、-和0-9中的数字除外。对于我的程序来说,它可以正常工作,但是有没有更干净的方法来编写此代码?不要指定要删除的字符集,因为您只有几个字符要包含,您可以使用负数字符集来指定这些字符: this.value = this.value.replace(/[^i0-9-]/g, ''

通过浏览stackoverflow,我成功地在我的

onkeyup=“this.value=this.value.replace(/[qwertyuopasdfghjklzxcvnm]/g,”)“


我打算限制键盘,但字母i-0-9中的数字除外。对于我的程序来说,它可以正常工作,但是有没有更干净的方法来编写此代码?

不要指定要删除的字符集,因为您只有几个字符要包含,您可以使用负数字符集来指定这些字符:

this.value = this.value.replace(/[^i0-9-]/g, '')

您还应该考虑适当地使用JavaScript附加事件侦听器,而不是使用内联处理程序,如果可能的话:

const input = document.querySelector(<input selector>);
input.addEventListener('keyup', function() {
  this.value = this.value.replace(/[^i0-9-]/g, '');
});

哇,谢谢你。。我现在想标记这个+1,但是stackoverflow限制了memaybe,你可以在keyup事件中调用.replace来阻止粘贴/。。。技巧?@AlexvanVliet的问题是,通过手动输入的字符在被替换之前会出现一段时间。可能,只是很难看,所以可能最好有单独的侦听器。我的意思是同时使用您建议的按键和带有.replace的keyup,但它对单击拖动没有帮助,因此没有真正的用处。可能同时使用按键(您提供的)和更改(.replace)事件