Javascript JS中电话号码的自定义验证
我正在尝试在表单提交中添加电话验证。 主要目标是:如果手机启动时不是“39”或“+39”,请在号码前添加此号码并提交。 代码通过脚本管理器添加到body标记之后。 但它对提交不起作用。我在浏览器控制台中没有任何错误Javascript JS中电话号码的自定义验证,javascript,web,unbounce,Javascript,Web,Unbounce,我正在尝试在表单提交中添加电话验证。 主要目标是:如果手机启动时不是“39”或“+39”,请在号码前添加此号码并提交。 代码通过脚本管理器添加到body标记之后。 但它对提交不起作用。我在浏览器控制台中没有任何错误 <form action="some.php" method="POST"> <div class="fields"> <div class="lp-pom-form-field single-line-text" id="container
<form action="some.php" method="POST">
<div class="fields">
<div class="lp-pom-form-field single-line-text" id="container_nome">
<label class="main lp-form-label" for="nome" id="label_nome" style="height: auto;">
<span class="label-style">Nome e Cognome *</span>
</label>
<input type="text" id="nome" name="nome" placeholder="" class="ub-input-item single text form_elem_nome">
</div>
<div class="lp-pom-form-field single-line-text" id="container_telefono">
<label class="main lp-form-label" for="telefono" id="label_telefono" style="height: auto;">
<span class="label-style">Telefono *</span>
</label>
<input type="text" id="telefono" name="telefono" placeholder="" class="ub-input-item single text form_elem_telefono">
</div>
</div>
</form>
window.onload = function() {
var mainForm = document.forms[0];
mainForm.addEventListener("submit", function validPhone() {
var re = /^\+?\d{1,3}?[- .]?\(?(?:\d{2,3})\)?[- .]?\d\d\d[- .]?\d\d\d\d$/;
var myPhone = '';
var element = document.getElementById('telefono');
if (element != null) {
myPhone = element.value;
}
else {
myPhone = null;
}
var myPhoneTrim = myPhone.trim().replace(/\s|\-|\(|\)/g, "");
var valid = re.test(myPhoneTrim);
if (myPhoneTrim.startsWith("39")) {
myPhoneTrim = "+" + myPhoneTrim;
} else if (!myPhoneTrim.startsWith("39") && !myPhoneTrim.startsWith("+39")) {
myPhoneTrim = "+39" + myPhoneTrim;
}
return valid;
});
}
同源名词*
电传*
window.onload=函数(){
var mainForm=document.forms[0];
mainForm.addEventListener(“提交”,函数validPhone(){
变量re=/^+?\d{1,3}?[-.](?(?:\d{2,3})\)?[-.]?\d\d\d[-.]?\d\d$/;
var myPhone='';
var元素=document.getElementById('telefono');
if(元素!=null){
myPhone=element.value;
}
否则{
myPhone=null;
}
var myPhoneTrim=myPhone.trim();
var valid=重新测试(myPhoneTrim);
if(myPhoneTrim.startsWith(“39”)){
myPhoneTrim=“+”+myPhoneTrim;
}如果(!myPhoneTrim.startsWith(“39”)和&!myPhoneTrim.startsWith(“+39”)),则为else{
myPhoneTrim=“+39”+myPhoneTrim;
}
返回有效;
});
}
尝试使用string.match()
var matches=string.match(^39)
而不是if(myPhoneTrim.startsWith(“39”))
和var matches=string.match(^[+]39)代码>
但是,我认为您的初始代码没有问题。您可以发布HTML吗?不确定您的HTML是什么样子,也不确定如何应用JS脚本,但在JSFIDLE中运行此脚本似乎很好:
JS:
是否已在浏览器中调试代码?或在控制台中记录您的值。仅在body标记后添加它closed@Vega这应该是
正文标记关闭之前的。在@swetanshkumar之前添加的脚本是的,但我无法找到问题所在,我将尝试。下次匹配。添加了HTML。您的代码似乎没有问题。到底出了什么问题?您得到的号码是否没有前缀39
或+39
?或者你根本没有得到数字?是的,我得到的数字没有前缀39或+39。这很奇怪。您是否尝试过使用string.match()
?您确定正在调用js脚本吗?为什么不试着在PHP内部处理这个问题呢?在JSFIDLE中,脚本与RegExp search and replace配合使用效果很好。而且unbounce.com没有给任何使用PHP的机会。是的,这就是问题所在。我的代码正在处理JSFIDLE和Codepan,甚至是在控制台中。但在unbounce.com LP上不起作用。在这一切之后,我不知道为什么。可能与取消绑定本机功能有冲突…不确定是否取消绑定。您确定选择了正确的dom对象或表单吗?你是如何在unbound中使用它的?如果您给表单一个ID而不是按索引元素访问会怎么样?是的,我确定,因为此页面只有一个表单。您可以共享实际页面/url吗?请检查我发送的更新示例。dom元素ORDINA不是按钮类型=“提交”。
var mainForm = document.getElementById("lp-pom-button-205");
mainForm.addEventListener("click", function validPhone() {
var re = /^\+?\d{1,3}?[- .]?\(?(?:\d{2,3})\)?[- .]?\d\d\d[- .]?\d\d\d\d$/;
var myPhone = '';
var element = document.getElementById('telefono');
if (element != null) {
myPhone = element.value;
}
else {
myPhone = null;
}
var myPhoneTrim = myPhone.trim().replace(/\s|\-|\(|\)/g, "");
var valid = re.test(myPhoneTrim);
if (myPhoneTrim.startsWith("39")) {
myPhoneTrim = "+" + myPhoneTrim;
} else if (!myPhoneTrim.startsWith("39") && !myPhoneTrim.startsWith("+39")) {
myPhoneTrim = "+39" + myPhoneTrim;
}
console.log(myPhoneTrim);
return valid;
})