onload运行意外的代码

时间:2013-02-20 16:49:01

标签: javascript forms

我正在编写一个javascript代码段,用于验证注册表单字段。 出于某种原因,在页面加载时也会调​​用onsubmit函数。

window.onload = function 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();只在提交时运行?

3 个答案:

答案 0 :(得分:2)

您正在通过check_values()将onsubmit属性设置为值返回;更改为以下内容:

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

答案 1 :(得分:1)

this question不久前提出的问题相同。

您要将chekc_values返回值分配给onsubmit,而不是功能本身。它应该是onsubmit = check_values;

check_values仅在分配时执行,而不是在事件被触发时执行。

答案 2 :(得分:1)

在以下行中,您调用check_values并将signup_form的onsubmit设置为函数返回的任何内容。

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

如果要设置功能本身,请删除括号。