2013-02-07 85 views
2

我有一個小問題,在javascript驗證的事情。窗體仍然提交後返回false javascript

<form action="insert.php" id="form" name="form" method="post" 
    onSubmit="return validate()"> 
    <pre> 
     Vul hier de/het E-mail adres(sen) in 
     <textarea name="email" rows="5" cols="50"></textarea><br> 
     Typ hier de E-mail 
     <textarea name="text" rows="5" cols="50"></textarea><br> 
     <input type="submit" name="Submit" value="Submit"> 
    </pre> 
</form> 

正如你在這裏看到的,我有兩個textareas。在上面的一箇中,你應該在彼此之下輸入一個或多個電子郵件地址,而在底部的textarea中,你應該自己編寫電子郵件。然後,當你點擊提交時,它會發送電子郵件到所有這些指定的電子郵件地址。

現在,我做了一個驗證兩個文本域:

function explodeArray(emailID, delimiter) { 
    tempArray = new Array(1); 
    var Count = 0; 
    var tempString = new String(emailID); 

    while (tempString.indexOf(delimiter) > 0) { 
     tempArray[Count] = tempString.substr(0, tempString.indexOf(delimiter)); 
     tempString = tempString.substr(
      tempString.indexOf(delimiter) + 1, 
      tempString.length - tempString.indexOf(delimiter) + 1 
     ); 
     Count = Count + 1 
    } 

    tempArray[Count] = tempString.replace("\r", ""); 
    return tempArray; 
} 

function validate() { 
    var emailID = document.form.email; 
    var delimiter = "\n"; 
    var emailArray = explodeArray(emailID.value, delimiter); 
    var textID = document.form.text; 
    var length = emailArray.length, 
     element = null; 
    for (var i = 0; i < length; i++) { 
     emailVar = emailArray[i]; 

     if (emailVar == null) { 
      alert("Email-adres bestaat niet") 
      emailID.focus() 
      return false 
     } 
     if (emailVar == "") { 
      alert("Email-adres veld is leeg") 
      emailID.focus() 
      return false 
     } 
     if (checkEmail(emailVar) == false) { 
      emailVar.value = "" 
      alert("Ongeldig E-mail adres"); 
      emailVar.focus() 
      return false 
     } 
    } 
    if ((textID.value == null) || (textID.value == "")) { 
     alert("E-mail textveld is leeg") 
     textID.focus() 
     return false 
    } 
    document.getElementById("form").submit(); 
    return true 
} 

function checkEmail(hallo) { 
    if (/^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,3})+$/.test(hallo)) { 
     return true 
    } 
    return false 
} 

(我可能複製大量的不相關的代碼以及,爲此後悔,只是複製了整個事情以防萬一......)

現在什麼工作:

當兩個文本域是空的 - 它不會提交;

-當郵件地址有效時不會提交底部的textarea爲空;

什麼的工作是:當電子郵件地址無效

-the形式仍然提交,即使在底部文本區域仍然是空的。

我一直試圖找出幾個小時,這裏可能是錯誤的,我google和檢查stackoverflow,但我真的找不到任何東西。有人能告訴我我在這裏做錯了嗎?

在此先感謝。

+0

你檢查你的控制檯,以確保它不是一個腳本錯誤第一? –

+0

...我會聽起來很愚蠢,但我認爲檢查控制檯會像真正的應用程序開發一樣,在那裏使用像Java和C#這樣的東西。我如何用Javascript做這樣的事情? :x –

+0

你當然可以用簡單的'text.split('\ n')''替換那個自制的'explodeArray()'函數 – MCL

回答

0

您正在使用emailVar.focus();不會執行。

這裏,固定:Live Demo

if (checkEmail(emailVar) == false) { 
    alert("Ongeldig E-mail adres"); 
    emailID.focus(); 
    return false; 
} 
+0

非常感謝!它現在有效。謝謝你,我自己從來沒有想過這個。 –

+0

@TienusMcVinger這很容易,只是檢查哪個代碼塊不行爲會給你。 – ATOzTOA

相關問題