2010-12-15 58 views
3

試圖使用這個表單來驗證電子郵件,使用教授說的使用函數。我們不能使用jquery或任何其他方式來處理這個問題。他非常......具體......他如何完成任務。無論如何,上週的網頁設計課程,並沒有太多的解釋介紹JavaScript。家庭作業幫助,我在這裏做錯了什麼? [Javascript,validation]

該函數只是驗證電子郵件,但我沒有frickin線索如何正確調用函數(verify_email)。我發現了無數的如何做到這一點的例子,但我敢肯定,他會因爲不這樣做而取消積分。瘋狂嘗試在編輯時對其進行格式化...提交時沒有問題。

<!DOCTYPE html> 
<html lang="en-US"> 
<head> 
    <title>Feedback</title> 
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> 
    <link type="text/css" rel="stylesheet" href="media/css/webpageCSS.css"/> 
    <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery /1.4.4/jquery.min.js"></script> 

    <script type="text/javascript"> 
    function verify_email() 
    { 
     var email_val=document.getElementById("email").value; 
    var regex = /^[A-Z0-9_%+-][email protected][A-Z0-9.-]+\.[A-Z]{2,4}$/i; 
    if(email_val.search(regex) == -1) 
    { 
    alert("Email is not valid"); 
    return false; 
    } 
    else 
    { 
    return true; 
    } 
    } 
</script> 


</head> 
<body class="sdd"> 

    <nav> 
    <a href="Project4.html">Home</a> 
     &nbsp;&nbsp;<a href="resume.html">Resume</a> 
     &nbsp;&nbsp;<a href="classList.html">Class List</a> 
     &nbsp;&nbsp;<a href="misc.html">Miscellaneous</a> 
     &nbsp;&nbsp;<a href="comments.html">Feedback</a> 
    </nav> 
    <header> 
    <h1 class="sd">Feedback Page</h1> 
    </header> 
    <div id="wrapper"> 
     <div id="leftcolumn2"> 
     </div> 
    <div id="rightcolumn2"> 
    <section> 
    <br><br> 
     Feedback Form: 
    <form name="comform" method="post" action="http://webdevfoundations.net/scripts/formdemo.asp" onsubmit="return verify_email();"> 
     <table class="comtab"> 
      <tr> 
       <td>*First Name: <input type="text" name="fname" id="fname"></td> 
       <td>*Last Name: <input type="text" name="lname" id="flname"></td> 
      </tr> 
      <tr> 
       <td id="com" colspan="2"><textarea cols="60" rows=5 name="comments" id="comments">Enter your feedback here</textarea></td> 
      </tr> 
      <tr> 
       <td class="alignl" colspan="2">Email (optional): <input type="text" name="email" id="email"></td> 

      </tr> 
      <tr> 
       <td class="alignl" colspan="2"><input type="submit" value="Submit Comment" ></td> 
      </tr> 

     </table> 
    </form> 
    </section> 

    <footer class="footbot"> 
    &copy; 2010 
    </footer> 
    </div> 
    </div> 

+0

如果你不能使用jQuery,爲什麼包含它? – icktoofay 2010-12-15 04:50:39

+0

稍後用於尚未製作的表格。 – roger34 2010-12-15 04:52:20

回答

3

試試這個

<!DOCTYPE html> 
    <html lang="en-US"> 
<head> 
    <title>Feedback</title> 
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> 
    <link type="text/css" rel="stylesheet" href="media/css/webpageCSS.css"/> 
     <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.4/jquery.min.js"></script> 

     <script type="text/javascript"> 
     function verify_email() 
     { 
      var email_val=document.getElementById("email").value; 
     var regex = /^[A-Z0-9_%+-][email protected][A-Z0-9.-]+\.[A-Z]{2,4}$/i; 
     if(email_val.search(regex) == -1) 
     { 
     alert("Email is not valid"); 
     return false; 
     } 
     else 
     { 
     return true; 
     } 
     } 
    </script> 


    </head> 
    <body class="sdd"> 

    <nav> 
    <a href="Project4.html">Home</a> 
      &nbsp;&nbsp;<a href="resume.html">Resume</a> 
      &nbsp;&nbsp;<a href="classList.html">Class List</a> 
      &nbsp;&nbsp;<a href="misc.html">Miscellaneous</a> 
      &nbsp;&nbsp;<a href="comments.html">Feedback</a> 
    </nav> 
     <header> 
    <h1 class="sd">Feedback Page</h1> 
    </header> 
     <div id="wrapper"> 
      <div id="leftcolumn2"> 
      </div> 
     <div id="rightcolumn2"> 
     <section> 
     <br><br> 
     Feedback Form: 
     <form name="comform" method="post" action="http://webdevfoundations.net/scripts/formdemo.asp" onsubmit="return verify_email();"> 
      <table class="comtab"> 
       <tr> 
        <td>*First Name: <input type="text" name="fname" id="fname"></td> 
        <td>*Last Name: <input type="text" name="lname" id="flname"></td> 
       </tr> 
       <tr> 
        <td id="com" colspan="2"><textarea cols="60" rows=5 name="comments" id="comments">Enter your feedback here</textarea></td> 
       </tr> 
       <tr> 
        <td class="alignl" colspan="2">Email (optional): <input type="text" name="email" id="email"></td> 

       </tr> 
       <tr> 
        <td class="alignl" colspan="2"><input type="submit" value="Submit Comment" ></td> 
       </tr> 

      </table> 
     </form> 
     </section> 

     <footer class="footbot"> 
     &copy; 2010 
     </footer> 
     </div> 
     </div> 
</body> 
</html> 
+0

這似乎起作用,現在我必須研究爲什麼。非常感謝,我會編輯它。 – roger34 2010-12-15 05:08:18

+0

我皺着眉頭複製/粘貼。如果你不知道什麼是壞的,試着找出它。這是學習過程的一部分。 – Blender 2010-12-15 05:16:48

+0

問題在函數verify_email(email_val)中,當您使用email_val.search()時,此email_val不包含任何值,因此首先我們已將email_val的值分配給email_val,然後將其與正則表達式匹配 – 2010-12-15 05:24:55

0

嘗試使用

<script type="text/javascript"> 
    function verify_email (email_val) 
    { 
    var regex = /^[A-Z0-9_%+-][email protected][A-Z0-9.-]+\.[A-Z]{2,4}$/i; 
    if(email_val.search(regex) == -1) 
    { 
     alert("Email is not valid"); 
     return false; 
    }else{ 
     return true; 
    } 
    } 
</script> 
+0

仍然無法正常工作。 – roger34 2010-12-15 04:57:55

+0

'i'將正則表達式標記爲不區分大小寫 – 2010-12-15 05:04:00

0

在網頁的身體,你需要與輸入的電子郵件註冊功能。

<input type="text" name="email" onchange="verify_email()" /> 
0

這可能是問題:

function verify_email(email_val) 
{ 
    var regex = /^[A-Z0-9_%+-][email protected][A-Z0-9.-]+\.[A-Z]{2,4}$/i; 

    if (email_val.search(regex) == -1) 
    { 
    alert("Email is not valid"); 
    return false; 
    } 

    return true; 
} 

總是返回true。另外,search不處理正則表達式。你需要運行字符串正則表達式。此代碼可能工作:

function verify_email(email_val) 
{ 
    var regex = /^[A-Z0-9_%+-][email protected][A-Z0-9.-]+\.[A-Z]{2,4}$/i; 

    if (regex.exec(email_val) == -1) 
    { 
    alert("Email is not valid"); 
    return false; 
    } else { 
    return true; 
    } 
} 

此外,請參閱評論馬特菲利普斯發佈:Homework help, what am I doing wrong here? [Javascript, validation]

另外,verify_email(email)未定義。你應該使用verify_email(document.getElementById('email').value)

+0

添加'else'語句不會改變任何內容。當if條件爲真時,不會執行'return true'。 – 2010-12-15 05:07:21

+0

這不就是重點嗎?如果電子郵件爲false,則'verify_email'返回false。我會在那裏添加一個事件變量,以便我可以阻止瀏覽器提交,但這超出了問題的範圍。 – Blender 2010-12-15 05:15:21

0

您是否想將字符串「email」傳遞給電子郵件驗證功能?或者你想實際檢查電子郵件input中的內容嗎?如果您只是通過「電子郵件」進行測試,則需要使用引號(')才能正確傳遞。

0

JavaScript變量郵件沒有在任何地方定義,所以你傳遞一個未定義的變量到javascript函數。調用函數就像

<input type="submit" value="Submit Comment" onclick="verify_email(document.getElementById('email').value);">