0

多数の入力フィールドを正規表現でチェックする関数に取り組んでいます。ただし、「if」ごとに false を返すのではなく、すべての条件を調べてから、さまざまな条件と入力ボックスからすべての innerHTML を一度に出力したいと考えています。各ボックスの下にテキストが表示されます。私が何をしようとしているのか、あなたにヒントを与えるために。

エラーを取得するために 1 つのボックスに何かを入力する代わりに、エラーを修正してから、フォームの次のボックスで新しいエラーを取得します。同じボタンのクリックですべてのエラーが発生することを確認したいと思います。(ボタンからの機能トリガー)。

以下のコードは、エラーを同時に表示しません。ループなしでこれを実行する方法はありますか? そうあるべきだと感じていますが、先に進む方法がわかりません。

 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;
         }
      }

コードは関連する部分で翻訳されました

4

2 に答える 2

0

各 if ステートメントで戻る代わりに、エラー検証を処理する をfalse作成し、失敗した各 if ステートメントで を設定します。varfalse

true関数の最後にのみ、またはそれfalseをチェックして戻る必要がありますvar

于 2013-06-09T14:37:27.353 に答える
0

おそらく、単一の変数を に設定して失敗し、いずれかのテストで にfalse設定するだけで失敗します。trueしかし、配列 (オブジェクト) を使用してエラー メッセージを格納し、ID をキーとして使用します。

おそらく、正規表現と元のエラー メッセージも配列に格納します。ただし、要素と配列を処理するには、ループを使用するのが賢明です。

于 2013-06-09T14:43:06.977 に答える