多个字段的Javascript多个警报

时间:2013-06-09 14:32:32

标签: javascript regex alert

我正在开发一个函数,我将使用正则表达式检查众多输入字段。但是,不是让它为每个“ifs”返回false,而是希望它能够通过所有条件,然后从不同的条件和输入框一次输出所有的innerHTML。文本显示在每个框下方。给你一些我想要的东西。

而不是必须在一个框中输入内容,以获取错误 - 更正错误,然后为表单中的下一个框获取新错误。我想看到所有错误都发生在同一个按钮点击上。 (从按钮触发功能)。

以下代码不会同时显示错误。有没有办法在没有循环的情况下执行此操作?感觉应该是这样,但我不确定如何继续前进。

 function sum()
      {
          prem1 = document.formular.Uppgift1.value;
          prem2 = document.formular.Uppgift2.value;
          prem3 = document.formular.Uppgift3.value;
          prem4 = document.formular.Uppgift4.value;
          totpr = document.formular.priset.value;


          varning1 = "name";
          varning2 = "address";
          varning3 = "phone";
          varning4 = "phone number has to contain numbers";
          varning5 = "e-mail";
          varning6 = " - This one is not relevant to the input fields and should only show when thus are correct - ";



          var re = /^[\w ]+$/;


            if(!re.test(prem1)) {
            document.getElementById('texterror1').innerHTML = (varning1);
            form.inputfield.focus();
             return false;
             }

             if(!re.test(prem2)) {
            document.getElementById('texterror2').innerHTML = (varning2);
            form.inputfield.focus();
             return false;
             }

             if(!re.test(prem3)) {
            document.getElementById('texterror3').innerHTML = (varning3);
            form.inputfield.focus();
             return false;
             }

             var re = /^(?=.*[0-9])\w{1,}$/;

             if(!re.test(prem3)) {
            document.getElementById('texterror4').innerHTML = (varning4);
            form.inputfield.focus();
             return false;
             }

             if(!re.test(totpr)) {
            alert (varning6);
            form.inputfield.focus();
             return false;
             }

             var re = /^[\w ]+$/;

             if(!re.test(prem4)) {
            document.getElementById('texterror5').innerHTML = (varning5);
            form.inputfield.focus();
             return false;
             }

          else (alert ("Tack för din beställning " +prem1 + "! Här följer de uppgifter vi mottagit om dig. Adress: " +prem2 +" Tel.nr: " +prem3 +" E-post: " +prem4 +" Pris att betala: "  +Discount +" kr" ));{
          return true;
         }
      }

代码已翻译在相关部分

2 个答案:

答案 0 :(得分:0)

不是在每个if语句中返回false,而是创建一个var来处理错误验证,在每个失败的if语句中将其设置为false

只有在功能结束时,您才能通过检查true返回falsevar

答案 1 :(得分:0)

我可能会使用单个变量失败将其设置为false,只在任何一个测试中将其设置为true失败。但我也会使用数组(对象)来存储错误消息,使用id作为键。

我可能还会将正则表达式和原始错误消息存储在数组中。但是,通过元素和数组来使用循环是明智的。