Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/439.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/27.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_Validation - Fatal编程技术网

如何使用javascript限制用户只输入数字并在文本区域中输入键?

如何使用javascript限制用户只输入数字并在文本区域中输入键?,javascript,validation,Javascript,Validation,我对Javascript非常陌生 我要求只允许数字,并在文本框中输入key作为输入。我还希望允许用户只将数字粘贴到文本区域 在搜索有关StackOverflow的问题后,我发现了以下内容: function validate(key) { //getting key code of pressed key var keycode = (key.which) ? key.which : key.keyCode; var phn = document.getElementById('textarea

我对Javascript非常陌生

我要求只允许
数字,并在文本框中输入key作为输入。我还希望允许用户只将数字粘贴到文本区域

在搜索有关StackOverflow的问题后,我发现了以下内容:

function validate(key)
{
//getting key code of pressed key
var keycode = (key.which) ? key.which : key.keyCode;
var phn = document.getElementById('textarea');
//comparing pressed keycodes
if (keycode < 48 || keycode > 57)
{
return false;
}

<div>
<textarea id="textarea" rows="4" cols="50"  onkeypress="return validate(event)" />
</div>
功能验证(键)
{
//获取按键的按键代码
var keycode=(key.which)?key.which:key.keycode;
var phn=document.getElementById('textarea');
//比较按下的按键代码
如果(键码<48 | |键码>57)
{
返回false;
}

不幸的是,这并不能完全解决我的问题。我想允许用户按enter键。如何更改上述代码以允许按enter键以及整数粘贴事件?

这是一个非常简单的修改。只需添加一个“等于”此外,由于您还希望处理粘贴事件,因此需要一个事件侦听器和“onPaste”函数

方法1:使用“onPaste”事件

function validatepaste(e) {
    var pastedata = e.clipboardData.getData('text/plain');
    if (isNaN(pastedata)) {
       e.preventDefault();
       return false;
    }
}

function validate(e) {
    //getting key code of pressed key
    var keycode = (e.which) ? e.which : e.keyCode;
    var phn = document.getElementById('textarea');
    //comparing pressed keycodes
    if ((keycode < 48 || keycode > 57) && keycode !== 13) {
        e.preventDefault();
        return false;
    }
}
函数validatepaste(e){
var pastedata=e.clipboardData.getData('text/plain');
if(isNaN(粘贴数据)){
e、 预防默认值();
返回false;
}
}
功能验证(e){
//获取按键的按键代码
var-keycode=(e.which)?e.which:e.keycode;
var phn=document.getElementById('textarea');
//比较按下的按键代码
如果((键码<48 | |键码>57)&&keycode!==13){
e、 预防默认值();
返回false;
}
}
这是一张工作票

这里有一些关于这次活动的信息

方法2:使用“onKeyUp”而不是“onPaste”和“onKeyPress”

这种方法不那么优雅,但如果您的环境不支持“onPaste”,它就可以工作

功能验证(e){
var invalidcharacters=/[^0-9]/gi
var phn=document.getElementById('textarea');
if(无效字符测试(phn值)){
newstring=phn.value.replace(invalidcharacters,“”);
phn.value=newstring
}
}

你的if语句应该看起来像 如果(键码==13 | |键码>x1和键码y1和键码 其中,x是数字的数字范围,y是字符的数字范围。

您可以仅对数字使用正则表达式替换,并返回/换行
如果(keycode<48 | | | keycode>57 | | | keycode==13)@zan走错了路。
return keycode==13 |(keycode>=48&&keycode为什么不做验证?@VigneswaranMarimuthu接受的答案详细说明了如何在答案的jQuery部分下只允许某些按键(包括一些可能没有想到的操作)(虽然它不是jQuery特有的)。@ShirgillAnsari我添加了第二种方法,以防您不想支持“onPaste”。如果这篇文章有帮助,请接受。@numbers:当您将某个内容粘贴到字段中,然后单击屏幕上其他位置时,第二种方法失败。因此,它保留在文本区域中。
function validate(e) {
    var invalidcharacters = /[^0-9]/gi
    var phn = document.getElementById('textarea');
    if (invalidcharacters.test(phn.value)) {
        newstring = phn.value.replace(invalidcharacters, "");
        phn.value = newstring
    }
}

<div>
    <textarea id="textarea" rows="4" cols="50" onKeyUp="validate(event)"></textarea>
</div>
function validate(){
    const input = document.getElementById("input")

    const regex = /[^0-1|\n\r]/g

    input.value = input.value.split(regex).join('');
}