2016-06-12 9 views
0

リスナーに対する私の知識は新しいものです。私は彼らが何をしているのか理解していますが、それを設定する方法は100%ではありません。私は空のフォームが提出されたときにテキストボックスを強調表示するように、リスナーを必要とする基本的なプロジェクトに取り組んでいます。テキストがボックスに入力されると、赤いボックスは消えます。私はすべてのセットアップがリスナーを持っていると信じています。私は間違っているが、カップルのステップで援助を探していたら訂正してください。リスナーを使用して<form>の空白フィールドを強調表示するにはどうすればよいですか?

フォームのサブミットイベントにリスナーを設定することで、フォームがsubmitDefault()のフォームの送信を妨げないようにすることができます(preventDefault())。タイトルまたは説明フィールドは空白のままであるか、ライセンスの受け入れボックスはチェックされませんが、それ以外の場合はフォームが送信されます。

空白のフィールドが(前述のスタイルを使用して)フォームの外観 の変更をトリガーするようにJavaScriptを拡張します。

フィールドに別のリスナーを追加すると、ユーザーがフィールドに入力すると、 (変更されたイベント)JavaScriptによって、追加したばかりの赤色が削除されます。ここで

私のコードです:

function isBlank(inputField){ 
 
    if(inputField.type=="checkbox"){ 
 
\t if(inputField.checked) 
 
\t  return false; 
 
\t return true; 
 
    } 
 
    if (inputField.value==""){ 
 
\t return true; 
 
    } 
 
    return false; 
 
} 
 

 
function makeRed(inputDiv){ 
 
    \t inputDiv.style.backgroundColor="#AA0000"; 
 
\t inputDiv.parentNode.style.backgroundColor="#AA0000"; 
 
\t inputDiv.parentNode.style.color="#FFFFFF"; \t \t 
 
} 
 
function makeClean(inputDiv){ 
 
\t inputDiv.parentNode.style.backgroundColor="#FFFFFF"; 
 
\t inputDiv.parentNode.style.color="#000000"; \t \t 
 
} 
 

 
window.onload = function(){ 
 
    var mainForm = document.getElementById("mainForm"); 
 
    var requiredInputs = document.querySelectorAll(".required"); 
 
    for (var i=0; i < requiredInputs.length; i++){ 
 
\t requiredInputs[i].onfocus = function(){ 
 
\t  this.style.backgroundColor = "#EEEE00"; 
 
\t } 
 
    } 
 
    mainForm.onsubmit = function(e){ 
 
\t var requiredInputs = document.querySelectorAll(".required"); 
 
\t for (var i=0; i < requiredInputs.length; i++){ 
 
\t  if(isBlank(requiredInputs[i])){ 
 
\t \t e.preventDefault(); 
 
\t \t makeRed(requiredInputs[i]); 
 
\t  } 
 
\t  else{ 
 
\t \t makeClean(requiredInputs[i]); 
 
\t  } 
 
\t } 
 
    } 
 
}
/* general text formatting */ 
 

 
h1, h2, h3, nav, footer { 
 
font-family: Georgia, Cambria, "Times New Roman", serif; 
 
} 
 
body { 
 
    font-family: "Lucida Sans", Verdana, Arial, sans-serif; 
 
    font-size: 85%; 
 
} 
 

 
table { 
 
    border-collapse: collapse; 
 
    border-spacing: 0; 
 
    width: 90%; 
 
    margin: 0 auto; 
 
} 
 
table tbody td{ 
 
    /* border: 1pt solid #95BEF0; */ 
 
    line-height: 1.5em; 
 
    vertical-align: top; 
 
    padding: 0.5em 0.75em; 
 
} 
 

 
legend { 
 
    background-color: #EBF4FB ; 
 
    margin: 0 auto; 
 
    width: 90%; 
 
    padding: 0.25em; 
 
    text-align: center; 
 
    font-weight: bold; 
 
    font-size: 100%; 
 
} 
 
fieldset { 
 
    margin: 1em auto; 
 
    background-color: #FAFCFF; 
 
    width: 60%; 
 
} 
 
form p { 
 
    margin-top: 0.5em; 
 
} 
 

 
.box { 
 
    border: 1pt solid #95BEF0; 
 
    padding: 0.5em; 
 
    margin-bottom: 0.4em; 
 
} 
 

 
.rectangle { 
 
    background-color: #EBF4FB; 
 
    padding: 0.5em; 
 
} 
 
.centered { 
 
    text-align: center; 
 
} 
 

 
.rounded, .rounded:hover { 
 
    border: 1px solid #172d6e; 
 
    border-bottom: 1px solid #0e1d45; 
 
    border-radius: 5px; 
 
    text-align: center; 
 
    color: white; 
 
    background-color: #8c9cbf; 
 
    padding: 0.5em 0 0.5em 0; 
 
    margin: 0.3em; 
 
    width: 7em; 
 
    -webkit-box-shadow: inset 0 1px 0 0 #72b9eb, 0 1px 4px 0 #b3b3b3; 
 
    box-shadow: inset 0 1px 0 0 #72b9eb, 0 1px 4px 0 #b3b3b3; 
 
} 
 
.rounded:hover { 
 
    background-color: #7f8dad; 
 
}
<!DOCTYPE html> 
 
<html> 
 
<head lang="en"> 
 
    <meta charset="utf-8"> 
 
    <title>Chapter 6</title> 
 
    <link rel="stylesheet" href="reset.css" /> 
 
    <link rel="stylesheet" href="css/Lab5.css" /> 
 
    <script type="text/javascript" src="script/Lab5.js"></script> 
 
</head> 
 
<body> 
 
<!-- <form method="get" action="" id="mainForm"> "Your original line of code replaced with your line of code from Lab 4 --> 
 
<form method="get" action="http://www.randyconnolly.com/tests/process.php"> 
 
    <fieldset> 
 
     <legend>Photo Details</legend> 
 
     <table> 
 
     <tr> 
 
      <td colspan="2"> 
 
       <p> 
 
       <label>Title</label><br/> 
 
       <input type="text" name="title" size="80" class="required" /> 
 
       </p> 
 
       <p> 
 
       <label>Description</label><br/> 
 
       <textarea name="description" rows="5" cols="61" class="required"> 
 
       </textarea> 
 
       </p>    
 
      </td> 
 
     </tr> 
 
     <tr> 
 
      <td> 
 
       <p> 
 
       <label>Continent</label><br/> 
 
       <select name="continent"> 
 
        <option>Choose continent</option> 
 
        <option>Africa</option> 
 
        <option>Asia</option> 
 
        <option>Europe</option> 
 
        <option>North America</option> 
 
        <option>South America</option> 
 
       </select> 
 
       </p> 
 
       <p> 
 
       <label>Country</label><br/> 
 
       <select name="country"> 
 
        <option>Choose country</option> 
 
        <option>Canada</option> 
 
        <option>Mexico</option> 
 
        <option>United States</option> 
 
       </select> 
 
       </p> 
 
       <p> 
 
       <label>City</label><br/>    
 
       <input type="text" name="city" list="cities" size="40"/> 
 
       <datalist id="cities"> 
 
        <option>Calgary</option>     
 
        <option>Montreal</option> 
 
        <option>Toronto</option>     
 
        <option>Vancouver</option> 
 
       </datalist> 
 
       </p> 
 
      </td> 
 
      <td> 
 
       <div class="box"> 
 
        <label>Copyright? </label><br/> 
 
        <input type="radio" name="copyright" value="1">All rights reserved<br/> 
 
        <input type="radio" name="copyright" value="2" checked>Creative Commons<br/> 
 
       </div> 
 
       <div class="box"> 
 
        <label>Creative Commons Types </label><br/> 
 
        <input type="checkbox" name="cc" >Attribution <br/> 
 
        <input type="checkbox" name="cc" >Noncommercial <br/>  
 
        <input type="checkbox" name="cc" >No Derivative Works <br/> 
 
        <input type="checkbox" name="cc" >Share Alike 
 
       </div>    
 
      </td> 
 
     </tr> 
 
     <tr> 
 
      <td colspan="2" > 
 
      <div class="rectangle"> 
 
       <label>I accept the software license</label> 
 
       <input type="checkbox" name="accept" class="required"> 
 
      </div> 
 
      </td> 
 
     </tr> 
 
     <tr> 
 
      <td> 
 
        <p> 
 
        <label>Rate this photo: </label><br/> 
 
        <input type="number" min="1" max="5" name="rate" /> 
 
        </p>     
 
        <p> 
 
        <label>Color Collection: </label><br/> 
 
        <input type="color" name="color" /> 
 
        </p>     
 
      </td> 
 
      <td> 
 
       <div class="box"> 
 
        <p> 
 
        <label>Date Taken: </label><br/> 
 
        <input type="date" name="date" /> 
 
        </p> 
 
        <p> 
 
        <label>Time Taken: </label><br/> 
 
        <input type="time" name="time" />      
 
       </div> 
 
      </td> 
 
     </tr> 
 
     <tr> 
 
      <td colspan="2"> 
 
       <div class="rectangle centered"> 
 
        <input type="submit" class="rounded"> <input type="reset" value="Clear Form" class="rounded">  
 
       </div> 
 
     </tr> 
 
     </table> 
 
    </fieldset> 
 
</form> 
 
</body> 
 
</html>

+0

JavaScriptに入る前に、 '

'タグのHTMLを切り替える必要があります:あなたは現在IDがない ''タグを持っていますが、HTMLコメントには本当に必要なタグが 'id = "mainForm" ' – searlea

+0

空白のフィールドを強調表示したいですか?その場合は、タグ自体で行うことができます。 javascriptを実装する必要はありません。 –

+0

私は残念なことに、この1つでjavascriptを使用する必要があります。リスナーとイベントの私の理解は最小限です。私は彼らが何をするか私はちょうど前になっている場合、それらを使用する方法がわからない – stangbass08

答えて

0

ではobjectはフォームです)提出:するために

object.onsubmit = function(){ 
    //things you want to happen on form submit 
}; 

を入力objectに耳を傾けます入力ですフィールドを入力してください)、これを試してみてください。

object.oninput = function(){ 
    //things that happen during input 
}; 

PS:これはjQueryを使う方がずっと簡単です。

+0

私はこの例を見つけました: 名前を入力: 私のhtmlボディの下にこの権利を追加しますか?また、私は謝罪しますが、私はこれも私のjsの名前と一致することを確認する必要がありますか?私のためのこの部分は本当にjs 101です。私は多くを読んだことがありますが、それはまだ私のためにまだクリックされていません – stangbass08

+0

1)私はHTMLタグ内でjavaScriptを使用しないでください。 2)私が投稿したコードは、あなたが '

関連する問題