Friday, May 17, 2024
 Popular · Latest · Hot · Upcoming
193
rated 0 times [  196] [ 3]  / answers: 1 / hits: 182902  / 10 Years ago, mon, october 6, 2014, 12:00:00

I'm working on a web form with several fields and a submit button. When the button is clicked, I have to verify that the required text boxes have been filled in and that the phone number is in the correct format. I can only accept 7 or 10 digit phone numbers, but characters such as (,), (-), etc are acceptable. If this box is empty or the phone number isn't in the correct format (not 7 or 10 numbers long, not a number) or has been left blank, I have to add a red border around the text box. This border is supposed to remain in place until the user corrects the error.



I can't get this to work properly. I have tried several different ways to go about doing this, but have gotten several different types of errors. One way seemed to work, but the red border only displayed for a second and then disappeared and the value in the textbox was reset.



Here is my code and a link to a jsfiddle I've created:



Javascript:



<script type=text/javascript>
function validateForm() {
return checkPhone();
}
function checkPhone() {
var phone = document.forms[myForm][phone].value;
var phoneNum = /^(?([0-9]{3}))?[-. ]?([0-9]{3})[-. ]?([0-9]{4})$/;
if(phone.value.match(phoneNum)) {
return true;
}
else {
document.getElementById(phone).className = document.getElementById(phone).className + error;
return false;
}
}
</script>


HTML:



<form name=myForm onsubmit = return validateForm()>
Phone Number: <input type=text id=phone><br>
</form>


JSFiddle:



http://jsfiddle.net/mkdsjc0p/


More From » html

 Answers
18

As for your regexp I guess it should be



^+{0,2}([-. ])?((?d{0,3}))?([-. ])?(?d{0,3})?([-. ])?d{3}([-. ])?d{4}


But in general the presumption is not correct because one might enter something like
++44 20 1234 56789 or +44 (0) 1234 567890
it is better to do something like this



var phone = document.forms[myForm][phone].value;
var phoneNum = phone.replace(/[^d]/g, '');
if(phoneNum.length > 6 && phoneNum.length < 11) { return true; }


this will assure that entered value has 7 to 10 figures nevertheless what the formatting is. But you have to think about max length for number might be more than 10 as in the sample above.


[#69232] Thursday, October 2, 2014, 10 Years  [reply] [flag answer]
Only authorized users can answer the question. Please sign in first, or register a free account.
collinisaaka

Total Points: 194
Total Questions: 105
Total Answers: 104

Location: Tonga
Member since Tue, Nov 30, 2021
3 Years ago
;