2016-06-30 20 views
1

私はJSの初心者です。外部のjsファイルとCSSがリンクされていることを確認しました。 HTML::外部のJavascript、CSSがEclipseで動作しない

<form id="theForm" action="submitData"> 
    <table> 
     <tr> 
      <td>Name:<span class="red">*</span></td> 
      <td><input style="color: black;" type="text" name="name" id ="name" class="Btn"></td> 
      <td id="nameError" class="red">&nbsp;</td> 
     </tr> 
     <tr> 
      <td>Contact Number:<span class="red">*</span></td> 
      <td><input style="color: black;" type="text" name="phone" id = "phone" class="Btn"></td> 
      <td id="phoneError" class="red">&nbsp;</td> 
     </tr> 
     <tr> 
      <td>Email:<span class="red">*</span></td> 
      <td><input style="color: black;" type="text" name="email" id = "email" class="Btn"></td> 
      <td id="emailError" class="red">&nbsp;</td> 
     </tr> 
     <tr> 
      <td>Address:</td> 
      <td><input style="color: black;" type="text" name="address" class="Btn"></td> 
      <td>-</td> 
     </tr> 
     <tr> 
      <td>Password:</td> 
      <td><input style="color: black;" type="text" name="password" class="Btn"> 
      <td>-</td> 
     </tr> 
     <tr> 
      <td></td> 
      <td> 
       <input style="color: black;" type="submit" value="SEND" id="submit"/> 
      </td> 
     </tr> 
    </table> 
</form> 

ここにCSSだけで、すべての特定の部分を実行していない私は、以下のようにフォームを持っています。

//USER ACCOUNT CREATION VALIDATION CSS 
.red span{ /* for error messages */ 
    font-style: italic; 
    color: red; 
} 

input.error { /* for the error input text fields */ 
    border: 1px red inset; 
    padding: 2px; 
} 

td { 
    margin: 0; 
    padding: 10px 10px 10px 3px; 
} 

JS:クラスの赤は、すべての CSSで実行されません。この中

window.onload = init; 

// The "onload" handler. Run after the page is fully loaded. 
function init() { 
    // Attach "onsubmit" handler 
    document.getElementById("theForm").onsubmit = validateForm; 
    // Set initial focus 
    document.getElementById("name").focus(); 
} 

function validateForm() { 
    return (isNotEmpty("name", "Please enter your name!") 
       && isNotEmpty("address", "Please enter your address!") 
       && isNotEmpty("phone", "Please enter a valid phone number!") 
       && isNotEmpty("phone", "Enter 8 digits", 8, 8) 
       && isNotEmpty("email", "Enter a valid email!") 
       ); 
     } 

// Return true if the input value is not empty 
function isNotEmpty(inputId, errorMsg) { 
    var inputElement = document.getElementById(inputId); 
    var errorElement = document.getElementById(inputId + "Error"); 
    var inputValue = inputElement.value.trim(); 
    var isValid = (inputValue.length !== 0); // boolean 
    showMessage(isValid, inputElement, errorMsg, errorElement); 
    return isValid; 
} 
document.getElementById("theForm").submit(); 

は、JS、私はすべてのフィールドが空でない満たされているかどうかを確認したいのですが、ページがありませんまったく検証しない。なぜこれはそうですか?

CSSが指定されていない理由を知りたいのですが、

EDITED JS

<script> 
function validateForm() { 
    var name = document.forms["myForm"]["name"].value; 
    var phone = document.forms["myForm"]["phone"].value; 
    var email = document.forms["myForm"]["email"].value; 
    var add = document.forms["myForm"]["address"].value; 
    var passwd = document.forms["myForm"]["password"].value; 
    if (name == null || name == "" || phone == null || phone == "" || email == null || email == "" || add == null || add == "" 
      || passwd == null || passwd == "") { 
     alert("All must be filled out"); 
     return false; 
    } 
}</script> 

答えて

1

Js-あなたはIdのものをすべて忘れてしまったので、実際には何も呼び出されていません。あなたのCSSの問題に関して、以下を試してみてくださいと

(あなたは名前ではなく、IDを持っている):

span.red { 
    font-style: italic; 
    color: red; 
} 
input.error { 
    /* for the error input text fields */ 

    border: 1px red inset; 
    padding: 2px; 
} 

td { 
    margin: 0; 
    padding: 10px 10px 10px 3px; 
} 

これは、あなたが//だけ/**/にコメントできませんJavascriptのではありません。また、span.redに注意してください。これはselect spans with the class redを意味します。あなたが書いたselect spans that are the children of .red

それは修正する必要があります...もう一つ、実際に検証する前に、アクションが呼び出されている、あなたはどのようにJSから提出する必要があります。

すべての検証機能の終了時input[type=submit]<button onclick="validateForm()">Submit</button>

なり、入力から送信ボタンに変更して、クリックイベントをバインド このdocument.getElementById("theForm").submit();

EDITを追加、削除:申し訳ありませんが、私はこの答えを書いている間、あなたのJSの間違いを見つけたように見えます、残りが助けてくれることを願っています...

EDIT 2:更新されたコード

HTML

<form id="theForm" action="submitData"> 
    <table> 
     <tr> 
      <td>Name:<span class="red">*</span></td> 
      <td><input style="color: black;" type="text" name="name" id ="name" class="Btn"></td> 
      <td id="nameError" class="red">&nbsp;</td> 
     </tr> 
     <tr> 
      <td>Contact Number:<span class="red">*</span></td> 
      <td><input style="color: black;" type="text" name="phone" id = "phone" class="Btn"></td> 
      <td id="phoneError" class="red">&nbsp;</td> 
     </tr> 
     <tr> 
      <td>Email:<span class="red">*</span></td> 
      <td><input style="color: black;" type="text" name="email" id = "email" class="Btn"></td> 
      <td id="emailError" class="red">&nbsp;</td> 
     </tr> 
     <tr> 
      <td>Address:</td> 
      <td><input style="color: black;" type="text" name="address" class="Btn"></td> 
      <td>-</td> 
     </tr> 
     <tr> 
      <td>Password:</td> 
      <td><input style="color: black;" type="text" name="password" class="Btn"> 
      <td>-</td> 
     </tr> 
     <tr> 
      <td></td> 
      <td> 
       <button id="submit" onclick="validateForm()">Submit</button> 
      </td> 
     </tr> 
    </table> 
</form> 

CSS:

span.red{ /* for error messages */ 
    font-style: italic; 
    color: red; 
} 

    input.error { /* for the error input text fields */ 
     border: 1px red inset; 
     padding: 2px; 
    } 

    td { 
     margin: 0; 
     padding: 10px 10px 10px 3px; 
    } 

JS:

 window.onload = init; 
// The "onload" handler. Run after the page is fully loaded. 
function init() { 
    // Set initial focus 
    document.getElementById("name").focus(); 
} 

function validateForm() { 
     var valid = (isNotEmpty("name", "Please enter your name!") && 
      isNotEmpty("address", "Please enter your address!") && 
      isNotEmpty("phone", "Please enter a valid phone number!") && 
      isNotEmpty("phone", "Enter 8 digits", 8, 8) && isNotEmpty(
       "email", "Enter a valid email!")); 
     if (valid) { 
      document.getElementById("theForm").submit(); 
     } 
    } 
    // Return true if the input value is not empty 

function isNotEmpty(inputId, errorMsg) { 
    var inputElement = document.getElementById(inputId); 
    var errorElement = document.getElementById(inputId + "Error"); 
    var inputValue = inputElement.value.trim(); 
    var isValid = (inputValue.length !== 0); // boolean 
    showMessage(isValid, inputElement, errorMsg, errorElement); 
    return isValid; 
} 

EDIT 3:おそらくこれを試してみてください?

function validateForm() { 
    var valid = true; 
    $("input").each(function(e) { 
    if (valid) { 
    var value=$(e.target).val(); 
     if (value === undefined || value==="" ) { 
     valid = false; 
     alert("All Fields must be filled out"); 
     } 
    } 
    }); 
    return valid; 
} 

編集4:

function validateForm() { 
    var valid = true; 
    $("input").each(function() { 
    if (valid) { 
    var value=$(this).val(); 
     if (value === undefined) { 
     valid = false; 
     alert("All Fields must be filled out"); 
     } 
    } 
    }); 
    return valid; 
} 

編集5:

function validateForm() { 
    var valid = true; 
    $("input").each(function() { 
    if (valid) { 
    var value=$(this).val(); 
     if (value === undefined) { 
     valid = false; 
     alert("All Fields must be filled out"); 
     } 
    } 
    }); 
    return valid; 
} 

編集6:

function validateForm() { 
    var valid = true; 
    var ids = ["name", "phone", "email", "address", "password"]; 
    for (var x in ids) { 
    var value = document.getElementById(ids[x]).value; 

    if (value === undefined || value === "") { 
     valid = false; 

    } 
    } 

    if (!valid) { 
    alert("All must be filled out"); 
    } 
} 
+0

大丈夫です。問題は解決されていないようです。私は援助を求めてその部分をコピーしようとしましたが、コードを返すとすべてが失敗しました。私はあなたの答えを試みます。更新された質問を見てください! –

+0

@ Kode.Error404 CSSの問題は、.redの直上にあるコメントによって引き起こされ、その1行で修正されます。 JSについては、更新された回答を参照してください –

+0

はい、私はすべてのフォームフィールドが満たされているかどうかをチェックするために私の関数を変更することにしました。より効率的な方法があるかどうか分かりますか?(質問を参照) –

0

私はあなたのJavaScriptの問題についてはよく分からないんだけど、.redクラスでエラーがあなたと要素内のみカラースパン要素にそれを設定したということです.redクラスです。また、input.errorが正しくないようです。私はあなたがそれをちょうど.errorにしたいと思うので、そのクラスを入力フィールドに適用すると変更されます。

.red { /* for error messages */ 
    font-style: italic; 
    color: red; 
} 

.error { /* for the error input text fields */ 
    border: 1px red inset; 
    padding: 2px; 
} 

td { 
    margin: 0; 
    padding: 10px 10px 10px 3px; 
} 
+0

はい、私は唯一の赤のクラスと色スパン要素にしたいです。前に '.red {color:red;} 'を試してみたところ、うまくいきませんでした。 –

関連する問題