1

我正在编写一个将验证注册表单字段的 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(); 仅在提交时运行?

4

3 回答 3

2

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

document.getElementById("signup_form").onsubmit = check_values;
于 2013-02-20T16:53:19.047 回答
1

与不久前提出的这个问题相同的问题。

您正在分配 to 的返回,而不是函数本身。应该是。chekc_valuesonsubmitonsubmit = check_values;

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

于 2013-02-20T16:52:48.880 回答
1

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

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

如果要设置函数本身,请删除括号。

于 2013-02-20T16:53:14.153 回答