web-dev-qa-db-ja.com

キー押下でアルファベットのみを入力するJavaScript関数

<textarea>には文字値のみを入力し、別の値には数値のみを入力します。 onkeypressを使用して<textarea>に数値のみを入力できるJavaScript関数を作成できました。これはFirefoxおよびChromeで機能します。

アルファベットの場合、windows.eventプロパティを使用して別のJavaScript関数を作成しています。唯一の問題は、これがChromeでのみ動作し、Firefoxでは動作しないことです。

数値のみの入力に使用されるonkeypressイベントを使用して、アルファベットのみの入力を許可する方法を知りたいですか?

function isNumberKey(evt){  <!--Function to accept only numeric values-->
    //var e = evt || window.event;
        var charCode = (evt.which) ? evt.which : evt.keyCode
    if (charCode != 46 && charCode > 31 
        && (charCode < 48 || charCode > 57))
        return false;
        return true;
        }
                   
    function ValidateAlpha(evt)
    {
        var keyCode = (evt.which) ? evt.which : evt.keyCode
        if ((keyCode < 65 || keyCode > 90) && (keyCode < 97 || keyCode > 123) && keyCode != 32)
         
        return false;
            return true;
    }
<label for="cname" class="label">The Risk Cluster Name</label>
<textarea id="cname" rows="1px" cols="20px" style="resize:none" placeholder="Cluster Name" onKeyPress="return ValidateAlpha(event);"></textarea>
<br>
<label for="cnum">Risk Cluster Number:</label>
<textarea id="cmun" rows="1px" cols="12px" style="resize:none" placeholder="Cluster Number" onkeypress="return isNumberKey(event)"></textarea>
10
Lucy

古いブラウザをサポートする必要がない場合は、inputイベントを使用します。この方法では、ユーザーがtextareaにテキストを貼り付けると、非アルファ文字もキャッチできます。

HTMLを少し整理しました。最も重要な変更は、cnameおよびcnumのイベントに対する変更です。両方の場合のイベントがoninputに変更されていることに注意してください。

<label for="cname" class="label"> The Risk Cluster Name</label>
<textarea id="cname" rows="1" cols="20" style="resize:none" placeholder="Cluster Name" oninput="validateAlpha();"></textarea>
<label for="cnum">Risk Cluster Number:</label>
<textarea id="cmun" rows="1" cols="12" style="resize:none" placeholder="Cluster Number" oninput="isNumberKey();"></textarea><br /><br /><br />

cnameにアルファベットの文字のみを許可し、cnumに数字のみを許可する場合、JavaScriptは次のようになります。

function validateAlpha(){
    var textInput = document.getElementById("cname").value;
    textInput = textInput.replace(/[^A-Za-z]/g, "");
    document.getElementById("cname").value = textInput;
}
function isNumberKey(){
    var textInput = document.getElementById("cmun").value;
    textInput = textInput.replace(/[^0-9]/g, "");
    document.getElementById("cmun").value = textInput;
}

このコードは 正規表現 を使用します。これは、文字列内のパターンを照合する方法です。

6
Josh Sherick
function lettersOnly() 
{
            var charCode = event.keyCode;

            if ((charCode > 64 && charCode < 91) || (charCode > 96 && charCode < 123) || charCode == 8)

                return true;
            else
                return false;
}

<input type="text" name="fname" value="" onkeypress="return lettersOnly(event)"/>
3
Hrushi

最適な使用法

<input type="text" name="checkno" id="checkno" class="form-control"  value="" onkeypress="return isNumber(event)"/>

<input type="text" name="checkname" id="checkname" class="form-control" value="" onkeypress="return isAlfa(event)"/>


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

function isAlfa(evt) {
    evt = (evt) ? evt : window.event;
    var charCode = (evt.which) ? evt.which : evt.keyCode;
    if (charCode > 31 && (charCode < 65 || charCode > 90) && (charCode < 97 || charCode > 122)) {
        return false;
    }
    return true;
}
2
function digitonly(input,event){    

        var keyCode = event.which ? event.which : event.keyCode;
        var lisShiftkeypressed = event.shiftKey;
        if(lisShiftkeypressed && parseInt(keyCode) != 9){return false;}
        if((parseInt(keyCode)>=48 && parseInt(keyCode)<=57) || keyCode==37/*LFT ARROW*/ || keyCode==39/*RGT ARROW*/ || keyCode==8/*BCKSPC*/ || keyCode==46/*DEL*/ || keyCode==9/*TAB*/  || keyCode==45/*minus sign*/ || keyCode==43/*plus sign*/){return true;}     
        BootstrapDialog.alert("Enter Digits Only"); 
        input.focus();
        return false;           
}

function alphaonly(input,event){

        var keyCode = event.which ? event.which : event.keyCode;
        //Small Alphabets
        if(parseInt(keyCode)>=97 && parseInt(keyCode)<=122){return true;}
        //Caps Alphabets
        if(parseInt(keyCode)>=65 && parseInt(keyCode)<=90){return true;}
        if(parseInt(keyCode)==32 || parseInt(keyCode)==13 || parseInt(keyCode)==46 || keyCode==9/*TAB*/ || keyCode==8/*BCKSPC*/ || keyCode==37/*LFT ARROW*/ || keyCode==39/*RGT ARROW*/ ){return true;}
        BootstrapDialog.alert("Only Alphabets are allowed") 
        input.focus();
        return false; 
}
1
vasudhendra

こんにちは、すべてのブラウザで私のために働いたコードの下で試してみてください、それは数字といくつかの特殊文字を許可します、+。

<asp:Textbox Id="txtPhone" runat="server" onKeyPress="return onlyNumbersandSpecialChar()">     </asp:Textbox>
function onlyNumbersandSpecialChar(evt) {
    var e = window.event || evt;
    var charCode = e.which || e.keyCode;
    if (charCode > 31 && (charCode < 48 || charCode > 57 || charCode > 107 || charCode > 219 ||          charCode > 221) && charCode != 40 && charCode != 32 && charCode != 41 && (charCode < 43 || charCode > 46)) {
        if (window.event) //IE
            window.event.returnValue = false;
        else //Firefox
            e.preventDefault();
    }
    return true;

   }

 </script>
0
RekhaShanmugam