Phone Number validation for populating phone number field on load(it takes value of phone number from user table) It should only accept these formats-(999) 999-9999, 999-999-9999, and 9999999999

Deepali Rattan
Tera Contributor

There are two phone number field for requester for and requested by:

Phone Number validation for populating phone number field on load(it takes value of phone number from user table)

It should only accept these formats-(999) 999-9999, 999-999-9999, and 9999999999

I have this code for on change: working fine populating numbers for these formats-(999) 999-9999, 999-999-9999, and 9999999999 (REQUESTED FOR)

 var pattern = /^[+1]*[(]{0,1}[0-9]{1,4}[)]{0,1}[-\s\./0-9]*$/;  
var phone = g_form.getValue('phone_number_requested_for');

if(!pattern.test(newValue)){  


alert('Phone enter a valid phone number');  


g_form.setValue('phone_number_requested_for', '');  
}
	else{
		 phone = phone.replace(/\D/g,'');


var regex = /^\d{10}$/;


var is_valid = regex.test(phone);


if(!is_valid){


alert('Invalid phone number. Please enter 10 digits/ Do not add country code');


g_form.clearValue('phone_number_requested_for');


}
	}


 }  

But same code is not working for onLoad:(REQUESTED BY)

 

function onLoad() {
   //Type appropriate comment here, and begin script below
    var user = g_form.getValue('requested_by');
    
    var ga = new GlideAjax('InternalApplicationUtil');
    ga.addParam('sysparm_name', 'getValues');
    ga.addParam('sysparm_val', user);
    ga.getXML(getdata);

    function getdata(response) {

        var answer = response.responseXML.documentElement.getAttribute("answer");
		var parseData = JSON.parse(answer);
		g_form.setValue('email_requested_by', parseData.email);
		g_form.setValue('email_requested_for', parseData.email);
		g_form.setValue('phone_number_requested_for', parseData.mobile_phone);
	//	g_form.setValue('phone_number_requested_by', parseData.mobile_phone);
		
		
		
		var phone=parseData.mobile_phone;
		
	//alert(check);
	 var pattern = /^[+1]*[(]{0,1}[0-9]{1,4}[)]{0,1}[-\s\./0-9]*$/;  
//var phone = g_form.getValue('phone_number_requested_for');

if(!pattern.test(phone)){  

alert(phone+" f");
alert('Phone enter a valid phone number');  


g_form.setValue('phone_number_requested_by', '');  
}
	else{
 phone = phone.replace(/\D/g,'');


var regex = /^\d{10}$/;

alert(' m '+phone);
	
var is_valid = regex.test(phone);


if(!is_valid){

alert('d  '+phone);
	
alert('Invalid phone number. Please enter 10 digits/ Do not add country code');


g_form.clearValue('phone_number_requested_by');


}
	}
 }  
}

Can someone tell what am I missing here?

1 ACCEPTED SOLUTION

Akshay H Mulky
Kilo Guru

Hi Deepali,


Firstly, can you try below modified client script for onChange:

function onChange(control, oldValue, newValue, isLoading, isTemplate) {
   if (isLoading || newValue === '') {
      return;
   }

	var oldV = oldValue;
	var validRegExp = /^\(?(\d{3})\)?[ -]?(\d{3})[ -]?(\d{4})$/;
   var checkPhone = g_form.getValue('phone_number_requested_for');
	
 if (checkPhone.search(validRegExp) == -1)
 {
 alert('Enter valid mobile phone in : (999) 999-9999, 999-999-9999, and 9999999999 formats');
 g_form.setValue('phone_number_requested_for',oldV);
 }
   
}

Secondly,

try implementing same regex expression check for On Load aswell.

 ex:

	//alert(check);
	 var validRegExp = /^\(?(\d{3})\)?[ -]?(\d{3})[ -]?(\d{4})$/; 
//var phone = g_form.getValue('phone_number_requested_for');

if (phone.search(validRegExp) == -1)
 {
 alert('Enter valid mobile phone in : (999) 999-9999, 999-999-9999, and 9999999999 formats');
 g_form.setValue('phone_number_requested_by','');
 }
else{
 g_form.setValue('phone_number_requested_by', phone);
}
 } 

 

 Note:

since we are using else condition to set phone number if its valid, you can remove below line:

find_real_file.png

View solution in original post

15 REPLIES 15

Onkar Pandav
Tera Guru

Hi,

You may get help from below BR script.

var phoneValue = current.getValue('u_phone'); //get value from of phone no.

var contactno = /^\(?([0-9]{3})\)?[-. ]?([0-9]{3})[-. ]?([0-9]{4})$/;

if (phoneValue.value.match(contactno)) {
        gs.addInfoMessage("Valid contact number");
        return true;
} else {
        gs.addErrorMessage("Invalid contact number");
        current.setAbortAction(true);
}

 

 

Akshay H Mulky
Kilo Guru

Hi Deepali,
Can you try below onChange client script:

 

function onChange(control, oldValue, newValue, isLoading, isTemplate) {
   if (isLoading || newValue === '') {
      return;
   }

	var oldV = oldValue;
	var validRegExp = /^\(?(\d{3})\)?[ -]?(\d{3})[ -]?(\d{4})$/;
   var checkPhone = g_form.getValue('mobile_phone');
	
 if (checkPhone.search(validRegExp) == -1)
 {
 alert('Enter valid mobile phone in : (999) 999-9999, 999-999-9999, and 9999999999 formats');
 g_form.setValue('mobile_phone',oldV);
 }
   
}

Akshay H Mulky
Kilo Guru

Hi Deepali,


Firstly, can you try below modified client script for onChange:

function onChange(control, oldValue, newValue, isLoading, isTemplate) {
   if (isLoading || newValue === '') {
      return;
   }

	var oldV = oldValue;
	var validRegExp = /^\(?(\d{3})\)?[ -]?(\d{3})[ -]?(\d{4})$/;
   var checkPhone = g_form.getValue('phone_number_requested_for');
	
 if (checkPhone.search(validRegExp) == -1)
 {
 alert('Enter valid mobile phone in : (999) 999-9999, 999-999-9999, and 9999999999 formats');
 g_form.setValue('phone_number_requested_for',oldV);
 }
   
}

Secondly,

try implementing same regex expression check for On Load aswell.

 ex:

	//alert(check);
	 var validRegExp = /^\(?(\d{3})\)?[ -]?(\d{3})[ -]?(\d{4})$/; 
//var phone = g_form.getValue('phone_number_requested_for');

if (phone.search(validRegExp) == -1)
 {
 alert('Enter valid mobile phone in : (999) 999-9999, 999-999-9999, and 9999999999 formats');
 g_form.setValue('phone_number_requested_by','');
 }
else{
 g_form.setValue('phone_number_requested_by', phone);
}
 } 

 

 Note:

since we are using else condition to set phone number if its valid, you can remove below line:

find_real_file.png

Lithukt Tahat
Kilo Explorer

On the requested by tab, try to use a temporary number from https://quackr.io. Probably there should be different numbers in both tabs. To be honest, I'm not good at this at all, and I'm skeptical that the phone number has to be entered somewhere. The phone number is private information about you that should not be shared anywhere. That's why I always opt for temporary numbers. Maybe it will work for you too. I hope I have helped you.

noahwbr23
Mega Contributor

Sometimes, websites don’t accept regular phone numbers, especially during registration. If you’re stuck, try using a platform where you can receive sms online uk. It’s super easy and saves a lot of time.