2012-03-09 69 views
0

在我正確輸入電子郵件地址並將名稱字段留爲空白時,此表單上的頁面正在提交且javacript未運行。否則,它的工作正常。使用JavaScript驗證表單時出現問題

請有人幫我解決這個JavaScript。

function validateform(data) 
{ 
    var validField = ""; 
    var namevalid=/^[a-zA-Z ]+$/; 
    if(data.name.value == ""){validField += "- Please Enter Your Name\n";} 
    else if(data.name.value.search(namevalid)==-1){validField += "- Entered Name contains Numbers or Symbols\n";} 
    if (/^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,3})+$/.test(data.email.value)){ 
     return true; 
     } 
     validField += "- Please Enter A Valid E-mail Address\n"; 
     alert(validField); 
     return false; 
} 


<form name="data" onsubmit="return validateform(this);" action="some.php" method="post"> 
<div> 
<label>Name:</label><input type="text" id="name" name="name" size="20" maxlength="20"/></div> 

<div> 
<label>E- mail Address:</label><input type="text" id="email" name="email" size="20" maxlength="30"/></div> 

<input type="submit" name="submit" value="Start Now!"/> 
</form> 

回答

0

您需要稍微重構一下代碼。如果電子郵件地址是有效的,那麼無論名稱字段如何,您的返回都將返回true。

function validateform(data) { 
    var validField = ""; 
    var isValid = false; 
    var namevalid = /^[a-zA-Z ]+$/; 
    if (data.name.value == "") { 
     validField += "- Please Enter Your Name\n"; 
    } 
    else if (data.name.value.search(namevalid) == -1) { 
     validField += "- Entered Name contains Numbers or Symbols\n"; 
     } 
    if (!(/^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,3})+$/.test(data.email.value))) { 
     validField += "- Please Enter A Valid E-mail Address\n"; 
    }; 
    if (validField == "") { 
     isValid = true; 
    } 
    if (!isValid) { 
     alert(validField); 
    } 
    return isValid; 
} 
0

您需要將<script>標籤,比這看起來不錯,以我等你之間的功能。

+0

他可能發佈一個片段,否則他會看到屏幕上的所有JS,並知道有什麼錯誤。 – Richard 2012-03-09 11:42:05

1

你需要在你的代碼變化不大。問題是因爲function validateform()總是返回false而不考慮電子郵件驗證。在工作頁面下面測試您的代碼。您應該添加警報並在else {}區塊中返回false。

<html> 
<head> 
<script type="text/javascript"> 
function validateform(data) 
{ 
    var validField = ""; 
    var namevalid=/^[a-zA-Z ]+$/; 
    if(data.name.value == ""){validField += "- Please Enter Your Name\n";} 
    else if(data.name.value.search(namevalid)==-1){validField += "- Entered Name contains Numbers or Symbols\n";} 
    if (/^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,3})+$/.test(data.email.value)){ 
     return true; 
    } 
    else { 
     validField += "- Please Enter A Valid E-mail Address\n"; 
     alert(validField); 
     return false; 
     } 
} 
</script> 
</head> 
<body> 
<form name="data" onsubmit="return validateform(this);" action="some.php" method="post"> 
<div> 
<label>Name:</label><input type="text" id="name" name="name" size="20" maxlength="20"/></div> 
<div> 
<label>E- mail Address:</label><input type="text" id="email" name="email" size="20" maxlength="30"/></div> 

<input type="submit" name="submit" value="Start Now!"/> 
</form> 
</body> 
</html> 
0

我不太清楚爲什麼這是失敗的,但函數根本沒有被調用。可能是onsubmit

爲什麼不使用類似jQuery的庫? 看一看這個例子,這工作得很好:http://jsfiddle.net/tR3XQ/1/

$("form[name=data]").submit(function(){ 

    var validField = ""; 
    var namevalid=/^[a-zA-Z ]+$/; 
    if(data.name.value == ""){validField += "- Please Enter Your Name\n";} 
    else if(data.name.value.search(namevalid)==-1){validField += "- Entered Name contains Numbers or Symbols\n";} 
    if (/^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,3})+$/.test(data.email.value)){ 
     return true; 
    } 
    validField += "- Please Enter A Valid E-mail Address\n"; 
    alert(validField); 
    return false; 

});​ 
0

您需要在validField添加一個檢查一個值的電子郵件檢查,否則將被忽略

if (validField.length = 0 && /^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,3})+$/.test(data.email.value)){ 
    return true; 
} 
validField += "- Please Enter A Valid E-mail Address\n"; 
alert(validField); 
return false;