2013-06-09 4 views
0

나는 정규식을 사용하여 수많은 입력 필드를 확인할 기능에 대해 작업하고 있습니다. 그러나 각 "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; 
     } 
     } 

코드가 관련 부분 대신 문 경우 각 false를 반환

답변

0

에 번역되었다, if 문 실패 각 false로 설정 오류 검증을 처리하는 var을 만들 수 있습니다.

var을 확인하여 기능이 끝난 후에 만 ​​true 또는 false을 반환해야합니다.

+0

나는이 같은 것을 알았지 만 그 일을 적절하게 구조화하는 방법을 잘 모르겠습니다. 검사 할 여러 정규 표현식과 여러 필드가 있으므로 근본적으로 내 문제입니다. – Holmberg

0

아마 하나의 변수 를 사용하는 것이 실패 할 경우에만 시험 중 어느 하나에 true로 설정, false로 설정에 실패했습니다. 하지만 배열 (객체)을 사용하여 ID를 키로 사용하여 오류 메시지를 저장합니다.

아마도 정규식과 원래 오류 메시지를 배열에 저장할 수도 있습니다. 루프를 사용하면 요소와 배열을 살펴볼 수 있습니다.

+0

Andrew에게 답장을 보내 주셔서 감사합니다. 내가 이해하고, 배열이나 루프도 필수는 아니지만 코드를 oranizing하는데 좋다. 그러나 이것이 작동하도록하는 가장 원시적 인 방법은 "return false;"를 제거하고 끝에 하나만 사용하는 것입니다. 그러나 이것을 작동 시키려면 어디에서 배치해야합니까? 어리석은 질문처럼 들리면 유감입니다. – Holmberg

+0

처음에 "var failed = false"변수를 추가하고 "return false"대신에 "failed = true"를 설정합니다. 그런 다음 끝에 실패한 값을 확인하십시오. 물론 논리를 바꿔서 변수 이름을 "passed"로 지정할 수도 있습니다. –

+0

고마워요. 나는 그것을 얻는다라고 생각한다. 거의. 나는 그것을 나 전에 시각화하려고 노력하고있다. 그러나 값을 확인할 때 무엇을 대조해야합니까? – Holmberg