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

少し前に尋ねられたこの質問と同じ問題。

関数自体ではなく、の戻り値を割り当てていchekc_valuesます。onsubmitである必要がありますonsubmit = check_values;

check_valuesイベントが発生したときではなく、割り当て時にのみ実行されます。

于 2013-02-20T16:52:48.880 に答える
1

次の行ではcheck_values、signup_formを呼び出しonsubmitて、関数が返すものに設定しています。

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

関数自体を設定する場合は、括弧を削除します。

于 2013-02-20T16:53:14.153 に答える