Javascript 电话号码验证功能出现问题
用Javascript编写一个简单的注册表单,我不太明白为什么我的手机验证功能不起作用。我想做的是 将字段设置为可选。如果用户没有在字段中输入任何内容,则表单仍然有效并提交 如果用户输入电话号码,则必须采用XXX-XXX-XXXX格式 非常感谢您的帮助 这是我的密码 函数validateform{ var username=document.getElementById'username'; var password=document.getElementById'password'; var firstname=document.getElementById'firstname'; var lastname=document.getElementById'lastname'; var dob=document.getElementById'dob'; var email=document.getElementById'email'; var phone=document.getElementById'phone'; 如果username.value.length<8{ alertUsername必须至少包含8个字符; username.focus; 返回false; } 如果password.value.length<8{ alertPassword必须至少为8个字符; password.focus; 返回false; } 设isVaild=momentdob.value,'MM/DD/YYYY',true.isValid 如果!有效吗{ alertDate必须为MM/DD/YYYY格式; dob.focus; 返回false; } } 功能验证电话{ var num1=document.getElementById'phone'。值; 如果num1!=&&!num1.match/\\d{2}\\d{8}/{ 警告“这不是正确的电话号码格式”; 返回false; } } 函数VAILDDATECKDATESTRING{ var dateforvailidation=dateString.value; var isVaild=有效期的MomentDate,'MM/DD/YYYY',true.isVaild; 如果有{ 返回true; }否则{ alertDate必须为MM/DD/YYYY格式; form.dob.focus; 返回false; } } 完全合法注册页面 提交 重置 函数validateform{ var username=document.getElementById'username'; var password=document.getElementById'password'; var firstname=document.getElementById'firstname'; var lastname=document.getElementById'lastname'; var dob=document.getElementById'dob'; var email=document.getElementById'email'; var phone=document.getElementById'phone'; 如果username.value.length<8{ alertUsername必须至少包含8个字符; username.focus; 返回false; } 如果password.value.length<8{ alertPassword必须至少为8个字符; password.focus; 返回false; } 设isVaild=momentdob.value,'MM/DD/YYYY',true.isValid 如果!有效吗{ alertDate必须为MM/DD/YYYY格式; dob.focus; 返回false; } } 功能验证电话{ var num1=document.getElementById'phone'。值; 如果num1!=| |!num1.match/\\d{2}\\d{8}/{ 警告“这不是正确的电话号码格式”; 返回false; } } 函数VAILDDATECKDATESTRING{ var dateforvailidation=dateString.value; var isVaild=有效期的MomentDate,'MM/DD/YYYY',true.isVaild; 如果有{ 返回true; }否则{ alertDate必须为MM/DD/YYYY格式; form.dob.focus; 返回false; } } 完全合法注册页面 提交 重置Javascript 电话号码验证功能出现问题,javascript,html,validation,Javascript,Html,Validation,用Javascript编写一个简单的注册表单,我不太明白为什么我的手机验证功能不起作用。我想做的是 将字段设置为可选。如果用户没有在字段中输入任何内容,则表单仍然有效并提交 如果用户输入电话号码,则必须采用XXX-XXX-XXXX格式 非常感谢您的帮助 这是我的密码 函数validateform{ var username=document.getElementById'username'; var password=document.getElementById'password'; var
你的正则表达式不正确。请尝试/^\d{3}-\d{3}-\d{4}$/。 您提供的正则表达式将匹配任何数量的格式,因为
<input type="phone" id="phone" placeholder="Phone Number" onsubmit="return validatePhone();">
下面是正确的正则表达式
^(\d{3}-){2}\d{4}$
最后一个问题是使用始终为trucy的匹配始终返回数组。甚至布尔[]也将为真。所以num1.match/\\d{2}\\d{8}/将始终为false。您应该使用RegExp.prototype.test
函数validateform{
var username=document.getElementById'username';
var password=document.getElementById'password';
var firstname=document.getElementById'firstname';
var lastname=document.getElementById'lastname';
var dob=document.getElementById'dob';
var email=document.getElementById'email';
var phone=document.getElementById'phone';
ifusername.value.length<8{
alertUsername必须至少包含8个字符;
username.focus;
返回false;
}
如果password.value.length<8{
alertPassword必须至少为8个字符;
password.focus;
返回false;
}
设isVaild=momentdob.value,'MM/DD/YYYY',true.isValid
如果!有效吗
{
alertDate必须为MM/DD/YYYY格式;
dob.focus;
返回false;
}
返回电话;
}
功能验证电话
{
控制台,log'x'
var num1=document.getElementById'phone'。值;
如果num1!=&&!/\d{3}-{2}\d{4}/.testnum1
{
警告“这不是正确的电话号码格式”;
返回false;
}
}
函数VAILDDATECKDATESTRING{
var日期有效性
=dateString.value;
var isVaild=有效期的MomentDate,'MM/DD/YYYY',true.isVaild;
如果有{
返回true;
}
否则{
alertDate必须为MM/DD/YYYY格式;
form.dob.focus;
返回false;
}
}
完全合法注册页面
提交
重置
虽然这段代码可以解决这个问题,但它确实有助于提高您的帖子质量。请记住,您是在为将来的读者回答这个问题,而这些人可能不知道您的代码建议的原因。您的回答并没有提供问题的解决方案。您当前的regex/\\d{2}\\d{8}/将匹配xxxxxxxxx,这与您所需的格式完全不同。你是从什么地方抄的这个正则表达式吗?看见可能重复的问题请尝试此ifnum1!=&&/^\d{3}-?\d{3}-?\d{4}$/.testnum1返回false;此处破折号-是可选的。在/^\d{3}-\d{3}-\d{4}$/中,破折号是必需的。非常好,它工作得非常好。我只想问你最后一个问题。我不清楚该怎么做,但是当用户按下submit并且一切都正确时,它应该会弹出一条消息,与成功提交的表单一致。如果我是正确的,我需要调用validateform函数,但我不清楚我需要做什么
^(\d{3}-){2}\d{4}$
if (num1 !== "" && !/(\d{3}-){2}\d{4}/.test(num1))