我正在编写一个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();只在提交时运行?
答案 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();
如果要设置功能本身,请删除括号。