2011-02-02 65 views
0

我無法弄清楚我的代碼有什麼問題; JavaScript根本不運行。我試圖使用Firebug,但它的行爲就像頁面上沒有腳本。調試JavaScript的最佳方式是什麼?有沒有人看到這有什麼問題?調試Javascript

HTML:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 

"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 

<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en"> 

<head> 

<script type="text/javascript" src="estimates.js"></script> 

<title>Pasha the Painter Estimates</title> 

<link href="painter.css" rel="stylesheet" type="text/css" /> 

<link href="favicon.ico" rel="icon" type="images/x-icon" /> 

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 

</head> 


<body> 

<div id="container"> 


<h1 id="logo"><img src="painterlogo.gif" alt="Pasha the Painter" width="620" height="120" /></h1> 


<div id="leftcolumn"> 

<ul> 

    <li><a href="index.html">Home</a></li> 

    <li><a href="services.html">Services</a></li> 

    <li><a href="testimonials.html">Testimonials</a></li> 

    <li><a hef="estimates.html">Estimates</a></li> 


    </ul>  

</div>   

<div id="rightcolumn"> 

    <p>Request a Free Estimate.</p> 


    <form method="post" onsubmit="return validateForm()" 

    action="http://webdevfoundations.net/scripts/painter.asp"> 

    <table> 


</tr> 


<tr> 


<td> 


    <label for="name" >Name: *</label> 


</td> 


<td> 


    <input type="text" name="name" id="name" maxlength="80" size="30" /> 


</td> 


</tr> 


<tr> 


<td> 


<label class="labelCol for="email">E-mail: *</label> 


</td> 


<td> 


    <input type="text" name="email" id="email" maxlength="80" size="30" /> 


</td>  


</tr> 


<tr> 

<td> 

    <label class="labelCol for="phone">Phone: *</label> 

</td> 

<td> 

<input type="text" name="phone" id="phone" maxlength="80" size="30" /> 


</td> 


</tr> 


<td> 

<label class="labelCol for="comments">Type of Job:</label> 

</td> 

<td > 


    <textarea name="comments" id="comments" maxlength="1000" cols="25" rows="3"></textarea> 


</td> 



</tr> 


<tr> 


<td colspan="2" style="text-align:center"> 


    <input type="submit" value="Free Estimate"> 


</td> 


</tr> 


</table> 


</form> 

    </div> 

    </form> 


    <div id="footer">Copyright &copy; 2011 Pasha the Painter<br /> 



<a href="mailto:[email protected]">gailliota1 [at] nku.edu</a></div> 




    </div> 

</div> 

</div> 


</body> 


</html> 

的Javascript:

function validateForm(){ 



var email = document.forms[0].email.value; 

var names = document.forms[0].name.value; 

var phone = document.forms[0].phone.value; 



var emailm = email.match(/^[a-zA-Z0-9_.-][email protected][a-zA-Z0-9-]+.[a-zA-Z0-9-.]+$/) 

var lnamem = names.match(/^([a-zA-Z]+)\S[a-zA-Z]([a-zA-Z]+))$/) 

var fnamem = names.match(/^([a-zA-Z+)\S([a-zA-Z]\.\S)?[a-zA-Z]+))$/) 

var phonem = phone.match(/^(1-?)?(\([2-9]\d{2}\)|[2-9]\d{2})-?[2-9]\d{2}-?\d{4}$/) 



if (names == ""){ 

     alert("Please enter your name."); 

     names.focus(); 

     return false; 

    } 



else if (fnamem == null || lnamem == null){ 

     alert("Invalid name."); 

     names.focus(); 

     return false; 

    } 



if (email == ""){ 

     alert("Please enter your e-mail address."); 

     email.focus(); 

     return false; 

    } 



else if (emailm == null){ 

     alert("Invalid e-mail address."); 

     email.focus(); 

     return false; 

    } 

if (phone == ""){ 

     alert("Please enter your phone number."); 

     phone.focus(); 

     return false; 



    } 

else if (phonem == null){ 

    alert("Invalid number.") 

    phone.focus(); 

    return false; 

    } 



    alert("Are you sure you would like to submit this form?"); 



    names = names.value.toUpperCase(); 



    return true; 



} 
+1

你嘗試加入調試;在jscript代碼?嘗試一下並在IE中打開。確保禁用腳本調試從IE->工具 - >高級 – 2011-02-02 06:02:09

回答

4

檢查你的正則表達式的錯誤。 lnamem擁有無與倫比的)字符和fnamem擁有兩個無與倫比的)個字符。

通過消除這些字符,我能得到您的代碼工作:

var lnamem = names.match(/^([a-zA-Z]+)\S[a-zA-Z]([a-zA-Z]+)$/) 
var fnamem = names.match(/^([a-zA-Z+)\S([a-zA-Z]\.\S)?[a-zA-Z]+$/) 
1

檢查在Firebug控制檯的任何錯誤消息。

您可以檢查您的JS使用JSLint

1

的JSLint顯示這些錯誤

Problem at line 13 character 40: Unescaped '-'. 

var emailm = email.match(/^[a-zA-Z0-9_.-][email protected][a-zA-Z0-9-]+.[a-zA-Z0-9-.]+$/) 

Problem at line 13 character 54: Unescaped '-'. 

var emailm = email.match(/^[a-zA-Z0-9_.-][email protected][a-zA-Z0-9-]+.[a-zA-Z0-9-.]+$/) 

Problem at line 13 character 75: Missing semicolon. 

var emailm = email.match(/^[a-zA-Z0-9_.-][email protected][a-zA-Z0-9-]+.[a-zA-Z0-9-.]+$/) 

Problem at line 15 character 60: Unescaped ')'. 

var lnamem = names.match(/^([a-zA-Z]+)\S[a-zA-Z]([a-zA-Z]+))$/) 

Problem at line 15 character 64: Missing semicolon. 

var lnamem = names.match(/^([a-zA-Z]+)\S[a-zA-Z]([a-zA-Z]+))$/) 

Problem at line 17 character 41: Unescaped '['. 

var fnamem = names.match(/^([a-zA-Z+)\S([a-zA-Z]\.\S)?[a-zA-Z]+))$/) 

Problem at line 17 character 64: Unescaped ')'. 

var fnamem = names.match(/^([a-zA-Z+)\S([a-zA-Z]\.\S)?[a-zA-Z]+))$/) 

Problem at line 17 character 65: Unescaped ')'. 

var fnamem = names.match(/^([a-zA-Z+)\S([a-zA-Z]\.\S)?[a-zA-Z]+))$/) 

Problem at line 17 character 69: Missing semicolon. 

var fnamem = names.match(/^([a-zA-Z+)\S([a-zA-Z]\.\S)?[a-zA-Z]+))$/) 

Problem at line 19 character 83: Missing semicolon. 

var phonem = phone.match(/^(1-?)?(\([2-9]\d{2}\)|[2-9]\d{2})-?[2-9]\d{2}-?\d{... 

Problem at line 23 character 11: Use '===' to compare with ''. 

if (names == ""){ 

Problem at line 35 character 17: Use '===' to compare with 'null'. 

else if (fnamem == null || lnamem == null){ 

Problem at line 35 character 35: Use '===' to compare with 'null'. 

else if (fnamem == null || lnamem == null){ 

Problem at line 47 character 11: Use '===' to compare with ''. 

if (email == ""){ 

Problem at line 59 character 17: Use '===' to compare with 'null'. 

else if (emailm == null){ 

Problem at line 69 character 11: Use '===' to compare with ''. 

if (phone == ""){ 

Problem at line 81 character 17: Use '===' to compare with 'null'. 

else if (phonem == null){ 

Problem at line 83 character 29: Missing semicolon.