Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/452.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript JS中电话号码的自定义验证_Javascript_Web_Unbounce - Fatal编程技术网

Javascript JS中电话号码的自定义验证

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

我正在尝试在表单提交中添加电话验证。 主要目标是:如果手机启动时不是“39”或“+39”,请在号码前添加此号码并提交。 代码通过脚本管理器添加到body标记之后。 但它对提交不起作用。我在浏览器控制台中没有任何错误

<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&nbsp;*</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&nbsp;*</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;
})