2017-11-30 26 views
0

フォームがあり、他の文字が送信されていないことを確認するために検証しようとしています。検証式がわかっていますが、ユーザーが妨害する可能性のある無効な文字を置くとfalseを返します。私が試したが、動作していないよう、また、どのような方法があるなら、私は私のコードをより効率的に助けてください検証式を使ってjavascriptでフォームを検証する

function validateForm() { 
 
    var name = document.forms["theForm"]["fname"].value; 
 
    var lastName = document.forms["theForm"]["lname"].value; 
 
    var email = document.forms["theForm"]["femail"].value; 
 
    var subject = document.forms["theForm"]["subject"].value; 
 
    
 
    if (name == "") { 
 
    
 
    \t window.alert("Missing First Name."); 
 
    \t name.focus(); 
 
    \t return false; 
 
    } 
 
    
 
    if (lastName == "") { 
 
     alert("Missing Last Name"); 
 
     return false; 
 
    } 
 
    
 
    if (email == "") { 
 
     alert("Missing Email"); 
 
     return false; 
 
    } 
 
    
 
    if (subject == "") { 
 
     alert("Incomplete Action"); 
 
     return false; 
 
    } 
 
    
 
}
input[type=text], select, textarea { 
 
    width: 100%; 
 
    padding: 12px; 
 
    border: 1px solid #ccc; 
 
    border-radius: 4px; 
 
    box-sizing: border-box; 
 
    margin-top: 6px; 
 
    margin-bottom: 16px; 
 
    resize: vertical; 
 
    } 
 

 
    input[type=submit] { 
 
    background-color: #993b3b; 
 
    color: white; 
 
    padding: 12px 20px; 
 
    border: none; 
 
    border-radius: 4px; 
 
    cursor: pointer; 
 
    } 
 

 
    input[type=submit]:hover { 
 
    background-color: #B0B0B0; 
 
    } 
 

 
    .formCont { 
 
    text-align: left; 
 
    margin: 152.5px 0; 
 
    border-radius: 5px; 
 
    background-color: #f2f2f2; 
 
    padding: 20px; 
 
    }
<!DOCTYPE html> 
 
<html> 
 
<head> 
 
<script> 
 
</script> 
 
</head> 
 
<body> 
 

 
<div class="formCont"> 
 
     <form name="theForm" onsubmit="return validateForm()" method="post"> 
 
     <label for="fname">First Name</label> 
 
     <input type="text" id="fname" name="firstname" placeholder="Your name.."> 
 

 
     <label for="lname">Last Name</label> 
 
     <input type="text" id="lname" name="lastname" placeholder="Your last name.."> 
 

 
     <label for="femail">Email</label> 
 
     <input type="text" id="femail" name="Email" placeholder="Your email.." 
 

 

 
     <label for="subject">Subject</label> 
 
     <textarea id="subject" name="subject" placeholder="Write something.." style="height:200px"></textarea> 
 

 
     <input type="submit" value="Submit"> 
 
    </form> 
 

 
    </div> 
 

 
</body> 
 
</html>

+1

質問の例である:これはJavaScriptを学習したり、実際にプロジェクトに取り組んでいるのシンプルな試みですか? 理由:コードは実際の環境で実際に動作するにはあまりにも単純すぎます。また、今日のJSの世界では、すべてを行うためにライブラリを使用する必要があります。完全にプレーンなバニラJSとCSSプロジェクトは、非常に悪い方法です。もちろん、あなたの上司は別の方法を持っていなければなりません。 – peterb

+0

私の前のコメントに2つの簡単なことを追加してください:あなたはいつも(あるいはほとんど常に)等価チェックのために===(トリプル)と==(ダブル)を使用しません。また、メールをチェックする必要があります。 – peterb

+1

私は大学のためのプロジェクトをやっているので、私は学んでいると思います。 – user8190367

答えて

0

[OK]をありがとうございましたので、これは大学のプロジェクトであることから。私はあなたがバニラJSを書く必要があると仮定しています(そうでない場合はjQueryが優れた選択肢です)。

オフを開始する物事のカップル:

name === "" がためのJavaScriptの型強制のname == ""よりも優れています。 また、HTMLの入力タイプはemailです。したがって <input type="email" id="femail" name="Email" placeholder="Your email.."> なぜあなたはwindow.alertを1か所に、alertを他の場所に持っていますか?ああああ。これはコードレビューになりつつあります:)。とにかく

、私はjQueryの選択であれば、ください、前に言ったようにしてくださいください。

+0

私はちょうどこのフォームを完了する必要があります – user8190367

0

@peterbはここに正しく述べjqueryのを使用して

function validateForm() { 
 
     var name = $("#fname").val(); 
 
     var lastName = $("#lname").val(); 
 
     var email = $("#femail").val(); 
 
     var subject =$("#subject").val(); 
 
     
 
     if (name == "" || name ==null || name==undefined) { 
 
     
 
     \t alert("Missing First Name.");   \t 
 
      markerror("#fname") 
 
     \t return false; 
 
     } 
 
     
 
     if (lastName == "" || lastName ==null || lastName==undefined) { 
 
      alert("Missing Last Name");    
 
      markerror("#lname") 
 
      return false; 
 
     } 
 
     
 
     if (email == "" || email ==null || email==undefined) { 
 
      alert("Missing Email"); 
 
      markerror("#femail") 
 
      return false; 
 
     } 
 
     
 
     if (subject == "" || subject ==null || subject==undefined) { 
 
      alert("Incomplete Action");    
 
      markerror("#subject") 
 
      return false; 
 
     } 
 
     
 
    } 
 
    
 
    function markerror(index){ 
 
    
 
      $(index).css("border", "1px solid red"); 
 
      $(index).focus(); 
 
      setTimeout(function() { 
 
       $(index).css("border", "1px solid #ccc"); 
 
      }, 4000); 
 
    }
 input[type=text], select, textarea { 
 
     width: 100%; 
 
     padding: 12px; 
 
     border: 1px solid #ccc; 
 
     border-radius: 4px; 
 
     box-sizing: border-box; 
 
     margin-top: 6px; 
 
     margin-bottom: 16px; 
 
     resize: vertical; 
 
     } 
 

 
     input[type=submit] { 
 
     background-color: #993b3b; 
 
     color: white; 
 
     padding: 12px 20px; 
 
     border: none; 
 
     border-radius: 4px; 
 
     cursor: pointer; 
 
     } 
 

 
     input[type=submit]:hover { 
 
     background-color: #B0B0B0; 
 
     } 
 

 
     .formCont { 
 
     text-align: left; 
 
     margin: 152.5px 0; 
 
     border-radius: 5px; 
 
     background-color: #f2f2f2; 
 
     padding: 20px; 
 
     }
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 

 
      <form name="theForm" onsubmit="return validateForm()" method="post"> 
 
      <label for="fname">First Name</label> 
 
      <input type="text" id="fname" name="firstname" placeholder="Your name.."> 
 

 
      <label for="lname">Last Name</label> 
 
      <input type="text" id="lname" name="lastname" placeholder="Your last name.."> 
 

 
      <label for="femail">Email</label> 
 
      <input type="text" id="femail" name="Email" placeholder="Your email.." 
 

 

 
      <label for="subject">Subject</label> 
 
      <textarea id="subject" name="subject" placeholder="Write something.." style="height:200px"></textarea> 
 

 
      <input type="submit" value="Submit"> 
 
     </form>