2013-02-20 49 views
1

我正在寫一個JavaScript代碼片段來驗證註冊表單域。 出於某種原因,onsubmit函數也在頁面加載時調用。onload運行意外代碼

在window.onload =函數validate_signup_form(){

var form_element = document.getElementById("signup_form"); 
var onload_values = document.forms["signup_form"]; 
var test = onload_values.elements[0].value; 
var required_fields = new Array(); 

document.getElementById("signup_form").onsubmit = check_values(); 

function check_values() 
{ 
    var current_values = document.forms["signup_form"]; 
    for (x in current_values) 
    { 
     if (current_values[x].value == onload_values[x].value) 
     { 
      // Error: The form values match the initial ones 
      return false; 
     } 
     elseif (current_values[x].value.toLowerCase() == onload_values[x].value.toLowerCase()) 
     { 
      // Error: The form values match the initial ones 
      return false;   
     } 
     elseif (current_values[x].value.toUpperCase() == onload_values[x].value.toUpperCase()) 
     { 
      // Error: The form values match the initial ones 
      return false;   
     } 
    } 
}; 
}; 

不應該check_values();僅在提交時運行?

回答

2

您的的onsubmit屬性的值設置爲通過check_values返回();更改到以下內容:

document.getElementById("signup_form").onsubmit = check_values; 
+0

謝謝。我想我錯過了,在我正在閱讀的快速js教程上。 – 2013-02-20 16:57:23

1

與前不久問this question相同的問題。

您正將返回值分配給onsubmit而不是函數本身。它應該是onsubmit = check_values;

check_values在賦值時僅在事件被觸發時才被執行。

1

在下面這一行中,您將調用check_values並將signup_form的onsubmit設置爲函數返回的任何值。

document.getElementById("signup_form").onsubmit = check_values(); 

如果要設置函數本身,請刪除括號。