Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Javascript Function to enter only alphabets on keypress

I want to enter only character values inside a <textarea> and numeric values in another. I have been able to make a JavaScript function which only allows numeric values to be entered in the <textarea> using onkeypress. This works in Firefox and Chrome.

For alphabets I am creating another JavaScript function using windows.event property. Only problem is this works only in Chrome and not in Firefox.

I want to know how to allow only alphabets to be entered using onkeypress event as used for entering only numeric values?

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>
like image 816
Lucy Avatar asked May 20 '13 10:05

Lucy


People also ask

How do I allow only letters in JavaScript?

You can write a JavaScript form validation script to check whether the required field(s) in the HTML form contains only letters. To get a string contains only letters (both uppercase or lowercase) we use a regular expression (/^[A-Za-z]+$/) which allows only letters.


2 Answers

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)"/>
like image 172
Hrushi Avatar answered Oct 11 '22 12:10

Hrushi


If you don't need to support older browsers I would use the input event. This way you can also catch non-alpha characters if the user pastes text into the textarea.

I cleaned up your HTML a little bit. The most important changes are to the events on cname and cnum. Note that the event in both cases has been changed to 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 />

Assuming you want cname to only accept characters in the alphabet and cnum to only accept numbers, your JavaScript should be:

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;
}

This code uses regular expressions, a way to match patterns in strings.

like image 26
Josh Sherick Avatar answered Oct 11 '22 12:10

Josh Sherick