2015-04-20 77 views
1

第二編輯:OH我的老兄我是一個偶像!我專注於JavaScript,並完全忽略了html中「結果」項的缺失......感謝那些幫助!表單驗證不喜歡我

編輯:到目前爲止感謝。我糾正了人們指出的錯誤,但它仍然不喜歡我。 :(我的html是如下:

我正在關注html.net上的教程(關於Javascript的第16課),而且我已經寫了它應該如何編寫,我甚至加載了javascript文件工作教程頁面和比較(是相同的)...然後複製它並將其粘貼到我的文件只是爲了肯定,它仍然無法正常工作,如果任何人可以提供意見,那將是美好的。 :

<html> 

    <head> 
    <title>Lesson 16: form validation</title> 
    <script type="text/javascript" src="lesson16.js"></script> 
    </head> 

    <body> 
    <h1>Lesson 16: Form validation</h1> 
    <form id="myForm" action="#" method="post"> 
    <fieldset> 
     <p><label for="txtName">Name: </label> 
     <input type="text" id="txtName" name="txtName" /> 
     </p> 
     <p><label for="txtEmail">Email: </label> 
     <input type="text" id="txtEmail" name="txtEmail" /> 
     </p> 
     <p><input type="submit" value="Submit" /></p> 
    </fieldset> 
    </form> 
    </body> 

</html> 

function init() 
{ 
    var myForm = document.getElementById("myForm"); 
    myForm.onsubmit = validate; 
} 

onload = init; 

function validate() 
{ 
    var name = document.getElementById("txtName").value; 
    var email = document.getElementById("txtEmail").value; 
    var isRequiredNameSet = false; 
    var isRequiredEmailSet = false; 
    var isEmailValid = false; 

    var message = ""; 
    isRequiredNameSet = validateRequired(name); 
    isRequiredEmailSet = validateRequired(email); 
    isEmailValid = validateEmail(email); 

    if (isRequiredNameSet && isRequiredEmailSet && isEmailValid) 
    { 
    message = "Thank you, you know how to follow instructions...good for you."; 
    } 
    else if (! isRequiredNameSet) 
    { 
    message = "Please, enter a name. First thing and you got it wrong..."; 
    writeMessage(message); 
    return false; 
    } 
    else if (! isRequiredEmailSet) 
    { 
    message = "Please, enter an email...come on, it's not that hard..."; 
    writeMessage(message); 
    return false; 
    } 
    else if (! isEmailValid) 
    { 
    message = "A valid email, numb nuts...with an @ symbol and a .com or whatever...GODS!!"; 
    writeMessage(message); 
    return false; 
    } 
    alert(message); 
} 

function validateRequired(input) 
{ 
    var isValid = false; 
    if (input.length == 0) 
    { 
    isValid = false; 
    } 
    else 
    { 
    isValid = true; 
    } 
    return isValid; 
} 

function validateEmail(email) 
{ 
    var isValid = false; 
    if (email.indexOf("@") == -1 || email.indexOf(".") == -1) 
    { 
    isValid = false; 
    } 
    else 
    { 
    isValid = true; 
    } 
    return isValid; 
} 

function writeMessage(text) 
{ 
    var paragraph = document.getElementById("result"); 

    if (paragraph.firstChild) 
    { 
    paragraph.removeChild(paragraph.firstChild); 
    } 
    paragraph.appendChild(document.createTextNode(text)); 
} 
+0

能否請您提供的HTML表單呢? –

+0

它會工作,如果我刪除了「fieldset」部分? – samuelm

回答

0

的問題是線myForm.onsubmit = validate(); ...你在哪裏調用驗證函數,而不是OS作爲參考分配它的onsubmit

myForm.onsubmit = validate; 

這同樣適用於onload

onload = init; 

然後你在的情況下,有一個問題isRequiredEmailSet

function validate() { 
    var name = document.getElementById("txtName").value; 
    var email = document.getElementById("txtEmail").value; 
    var isRequiredNameSet = false; 
    var isRequiredEmailSet = false; 
    var isEmailValid = false; 

    var message = ""; 
    isRequiredNameSet = validateRequired(name); 
    isRequiredEmailSet = validateRequired(email); 
    isEmailValid = validateEmail(email); 

    if (isRequiredNameSet && isRequiredEmailSet && isEmailValid) { 
     message = "Thank you, you know how to follow instructions...good for you."; 
    } else if (!isRequiredNameSet) { 
     message = "Please, enter a name. First thing and you got it wrong..."; 
     writeMessage(message); 
     return false; 
    } else if (!isRequiredEmailSet) { 
     message = "Please, enter an email...come on, it's not that hard..."; 
     writeMessage(message); 
     return false; 
    } else if (!isEmailValid) { 
     message = "A valid email, numb nuts...with an @ symbol and a .com or whatever...GODS!!"; 
     writeMessage(message); 
     return false; 
    } 
    alert(message); 
} 

演示:Fiddle

0

您在有(在驗證功能中),但它應該是isRequiredNameSet

注意:您可以恰克你validateRequired() ...function validateRequired(input) { return !!input.length; }