2017-02-25 6 views
0

検証エラーメッセージが正しく表示されませんでした。たとえば、名前入力に値を挿入しましたが、電子メールの検証エラーメッセージが表示されました。特定の入力に値を挿入すると、それの検証エラーメッセージだけが表示されます。関連入力で検証エラーメッセージが正しく表示されませんでした

<form class="contactForm" onsubmit="return validateContactForm();"> 
           <div class="form-group"> 
            <label for="name" class="label-login">Name</label> 
            <input type="text" class="form-control" id="name" autocomplete="off" /> 
            <span id="namespan" class="text-danger"></span> 
            <i class="fa fa-user"></i> 
           </div> 
           <div class="form-group"> 
            <label for="email" class="label-login">email</label> 
            <input type="email" class="form-control" id="email" autocomplete="off" /> 
            <span id="emailspan" class="text-danger"></span> 
            <i class="fa fa-envelope"></i> 
           </div> 
           <div class="form-group"> 
            <label for="phone" class="label-login">tell number </label> 
            <input type="text" class="form-control" id="phone" autocomplete="off" /> 
            <span id="tellspan" class="text-danger"></span> 
            <i class="fa fa-phone"></i> 
           </div> 
           <div class="form-group"> 
            <label for="message" class="label-login label-message">message</label> 
            <textarea class="form-control" rows="3" id="message" autocomplete="off"></textarea> 
            <span id="messagespan" class="text-danger"></span> 
           </div> 
           <div class="form-group"> 
            <input type="submit" class="btn btn-send center-block" value="send/> 
           </div> 
          </form> 
       $(document).ready(function() {    
      $(".contactForm input,.contactForm textarea").each(function() { 
       $(this).keyup(function() { 
      var pt = /^[\w.][email protected][a-z0-9-]+\.[a-z]{2,6}/i; 

      if (!pt.test($("#email").val())) {  
       $("#emailspan").html("insert email correctly"); 
      } 
      else { 
       $("#emailspan").text(""); 

      } 
      if ($("#name").val().length < 3) { 
       $("#namespan").html("insert name correctly"); 
      } 
      else { 
       $("#namespan").text(""); 
      } 
      if ($("#phone").val().length < 12) { 
       $("#tellspan").html("insert phone correctly"); 
      } 
      else { 
       $("#tellspan").text(""); 
      } 
      if ($("#message").val().trim().length < 3) { 
       $("#messagespan").html("insert message correctly"); 
      } 
      else { 
       $("#messagespan").text(""); 
      } 
     }); 
    }); 
}); 
    function validateContactForm() { 
    var bool = true; 
    var pt = /^[\w.][email protected][a-z0-9-]+\.[a-z]{2,6}/i; 
    if (!pt.test($("#email").val())) { 
     bool = false; 
     $("#emailspan").html("insert email correctly"); 
    } 

    if ($("#name").val().length < 3) { 
     bool = false; 
     $("#namespan").html("insert name correctly"); 
    } 
    if ($("#phone").val().length < 12) { 
     bool = false; 
     $("#tellspan").html("insert tell correctly"); 
    } 
    if ($("#message").val().trim().length < 3) { 
     bool = false; 
     $("#messageSpan").html("insert message correctly"); 
    } 

    return bool; 
} 

答えて

0

私は形でいくつかの問題を発見し、

フォーム送信ボタンが正しく

.contactFormnotフォームタグに追加されていない閉じませんここで更新

$(document).ready(function() { 
 
\t $(".contactForm input,.contactForm textarea").each(function() { 
 
\t \t $(this).keyup(function() { 
 
\t \t \t var pt = /^[\w.][email protected][a-z0-9-]+\.[a-z]{2,6}/i; 
 
\t \t \t if (!pt.test($("#email").val())) { 
 
\t \t \t \t $("#emailspan").html("insert email correctly"); 
 
\t \t \t } else { 
 
\t \t \t \t $("#emailspan").text(""); 
 
\t \t \t } 
 
\t \t \t if ($("#name").val().length < 3) { 
 
\t \t \t \t $("#namespan").html("insert name correctly"); 
 
\t \t \t } else { 
 
\t \t \t \t $("#namespan").text(""); 
 
\t \t \t } 
 
\t \t \t if ($("#phone").val().length < 12) { 
 
\t \t \t \t $("#tellspan").html("insert phone correctly"); 
 
\t \t \t } else { 
 
\t \t \t \t $("#tellspan").text(""); 
 
\t \t \t } 
 
\t \t \t if ($("#message").val().trim().length < 3) { 
 
\t \t \t \t $("#messagespan").html("insert message correctly"); 
 
\t \t \t } else { 
 
\t \t \t \t $("#messagespan").text(""); 
 
\t \t \t } 
 
\t \t }); 
 
\t }); 
 
}); 
 
function validateContactForm() { 
 
\t var bool = true; 
 
\t var pt = /^[\w.][email protected][a-z0-9-]+\.[a-z]{2,6}/i; 
 
\t if (!pt.test($("#email").val())) { 
 
\t \t bool = false; 
 
\t \t $("#emailspan").html("insert email correctly"); 
 
\t } 
 
\t if ($("#name").val().length < 3) { 
 
\t \t bool = false; 
 
\t \t $("#namespan").html("insert name correctly"); 
 
\t } 
 
\t if ($("#phone").val().length < 12) { 
 
\t \t bool = false; 
 
\t \t $("#tellspan").html("insert tell correctly"); 
 
\t } 
 
\t if ($("#message").val().trim().length < 3) { 
 
\t \t bool = false; 
 
\t \t $("#messageSpan").html("insert message correctly"); 
 
\t } 
 
\t return bool; 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 

 
<form class="contactForm" onsubmit="return validateContactForm();"> 
 
           <div class="form-group"> 
 
            <label for="name" class="label-login">Name</label> 
 
            <input type="text" class="form-control" id="name" autocomplete="off" /> 
 
            <span id="namespan" class="text-danger"></span> 
 
            <i class="fa fa-user"></i> 
 
           </div> 
 
           <div class="form-group"> 
 
            <label for="email" class="label-login">email</label> 
 
            <input type="email" class="form-control" id="email" autocomplete="off" /> 
 
            <span id="emailspan" class="text-danger"></span> 
 
            <i class="fa fa-envelope"></i> 
 
           </div> 
 
           <div class="form-group"> 
 
            <label for="phone" class="label-login">tell number </label> 
 
            <input type="text" class="form-control" id="phone" autocomplete="off" /> 
 
            <span id="tellspan" class="text-danger"></span> 
 
            <i class="fa fa-phone"></i> 
 
           </div> 
 
           <div class="form-group"> 
 
            <label for="message" class="label-login label-message">message</label> 
 
            <textarea class="form-control" rows="3" id="message" autocomplete="off"></textarea> 
 
            <span id="messagespan" class="text-danger"></span> 
 
           </div> 
 
           <div class="form-group"> 
 
            <input type="submit" class="btn btn-send center-block" value="send" /> 
 
           </div> 
 
          </form>

0

あなたはいつもm ake検証はすべて一緒に実行されます。したがって、フィールド上でキーアップが行われると、すべての検証が行われます。 これを避けるには少なくとも2つの方法があります。

ウェイ1

あなたは、イベントを発射した要素のidをチェックし、そのフィールドのみロジックを検証することができます。独自の関数を使用し、各フィールドの検証にifを追加します。

Ex。

 $(".contactForm input,.contactForm textarea").each(function() { 
      $(this).keyup(function() { 
     var pt = /^[\w.][email protected][a-z0-9-]+\.[a-z]{2,6}/i; 
     var id=$(this).attr("id"); 

     if(id==="email"){ 
     if (!pt.test($("#email").val())) {  
      $("#emailspan").html("insert email correctly"); 
      } 
      else { 
      $("#emailspan").text(""); 
     } 
     } 
     ... 

というように、各フィールドの..

ウェイ2

別の方法としては、$(".contactForm input,.contactForm textarea").each(function() {を除去して、各特定のフィールドのために作るとハンドラ関数ことができます。

Ex。

$("#name").keyup(function() { 
    if ($(this).val().length < 3) { 
      $("#namespan").html("insert name correctly"); 
     } 
     else { 
      $("#namespan").text(""); 
     } 
}); 
..... 

というように、各フィールドの

関連する問題