web-dev-qa-db-ja.com

JavaScriptキーコードは、数字とプラス記号のみを許可します

このJavaScript関数を使用して、テキストボックスにユーザーのみの数値を入力するように強制します。今、この関数を変更して、ユーザーがプラス(+)記号を入力できるようにします。これを達成する方法は?

//To only enable digit in the user input

function isNumberKey(evt)
{
    var charCode = (evt.which) ? evt.which : event.keyCode
    if (charCode > 31 && (charCode < 48 || charCode > 57))
        return false;
    return true;
}
11
cyberfly

'+'記号の10進数ASCIIコードは43なので、条件に追加できます。

例えば ​​:

function isNumberKey(evt)
{
    var charCode = (evt.which) ? evt.which : event.keyCode
    if (charCode != 43 && charCode > 31 && (charCode < 48 || charCode > 57))
        return false;
    return true;
}

このようにして、プラス記号が許可されます。

13
dominicbri7

このコードは機能する可能性があります。 SHIFT + (equal sign)とテンキー+のサポートを追加しました。

function isNumberKey(evt)
{
  var charCode = (evt.which) ? evt.which : event.keyCode;
  var shiftPressed = (window.Event) ? e.modifiers & Event.SHIFT_MASK : e.shiftKey;

  if ((shiftPressed && charCode == 187) || (charCode == 107))
  {
    return true;
  } else if ((charCode > 95) && (charCode < 106)) {
    return true;
  } else if (charCode > 31 && (charCode < 48 || charCode > 57))) {
    return false;
  } else {
    return true;
  }
}
7
Blender

これは愚かです...実際にはまったく答えではありません。以下を行うことをお勧めします。

function isNumberKey(evt)
{
    console.log(evt.keyCode);
    return false;
}

そして、すべてのキーの範囲を見つけて、それを実装します。

3
Santosh Linkha

それは仕事です。 Javascriptキーコードは数字とプラス記号のみを許可します

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>JavaScript form validation</title>
</head>
<body>

<form name="form1" action="#">

Mobile Number:&nbsp;&nbsp;<input type='text'  id='PhoneNumber' maxlength="10" onKeyPress="return IsNumeric3(event);" ondrop="return false;" onpaste="return false;"/>
<span id="error3" style="color: Red; display: none">* Input digits (0 - 9)</span>

</form>
 <script type="text/javascript">
        var specialKeys = new Array();
        specialKeys.Push(8); 
                specialKeys.Push(43); 
                specialKeys.Push(37); 
                specialKeys.Push(39); 
                //Backspace
        function IsNumeric3(e) {
            var keyCode = e.which ? e.which : e.keyCode
            var ret = (keyCode != 37 && keyCode != 8 && keyCode != 46 && (keyCode >= 48 && keyCode <= 57) || specialKeys.indexOf(keyCode) != -1);
            document.getElementById("error3").style.display = ret ? "none" : "inline";
            return ret;
        }
    </script>

 <script>
function stringlength(inputtxt, minlength, maxlength)
{ 
var field = inputtxt.value; 
var mnlen = minlength;
var mxlen = maxlength;

if(field.length<mnlen || field.length> mxlen)
{ 
alert("Please input the 10 digit mobile number");
return false;
}
else
{ 

return true;
}
}
</script>
</body>
</html>

皆ありがとう

3
manoj

変更されたコードは次のとおりです。

function isNumberKey(evt)
{
    var charCode = (evt.which) ? evt.which : event.keyCode
    if ( (charCode >= 48  && charCode <= 57) || charCode == 43) 
        return true;
    return false;
}
1
Shamim Hafiz

これがコードです。電話番号とプラス+サインイン電話フィールドで正常に動作します。キーダウン関数にコードを実装する必要があります。特定の電話フィールドのID /クラスをターゲットにして、キーダウン機能を使用します。

    //allows only these keys
    // backspace, delete, tab, escape, and enter
    if ( event.keyCode == 107 || event.keyCode == 46 || event.keyCode == 8 || event.keyCode == 9 || event.keyCode == 27 || event.keyCode == 13 || 
         // Ctrl+A
        (event.keyCode == 65 && event.ctrlKey === true) || 
         // home, end, left, right
        (event.keyCode >= 35 && event.keyCode <= 39)) {
             return;
    }
    else {
        // Ensure that it is a number and stop the keypress
        if (event.shiftKey || (event.keyCode < 48 || event.keyCode > 57) && (event.keyCode < 96 || event.keyCode > 105 )) {
            event.preventDefault(); 
        }   
    }
0
Infoconic

上記の同僚の経験を使用して、私にぴったりの関数を1つ作成します。数字、矢印、バックスペースを除くすべてをフィルタリングします。多分それは誰かのために役立つでしょう。

function isKeyCorrect(keyEvent) {
    var charCode = keyEvent.which ? keyEvent.which : keyEvent.keyCode;
    var isNotNumber = charCode < 48 || charCode > 57;
    var isNotArrow = charCode < 37 || charCode > 40;
    var isNotBackspace = charCode !== 8;

    return isNotNumber && isNotArrow && isNotBackspace;
}
0
chak_zefir