0

私は現在このHTMLコードを使用しています:

<form onsubmit="return validateForm()" action="page.html" >
Name:  <input type="text" id="name" /><br />
Email: <input type="text" id="email" /><br />
<input type="submit" value="Submit" />
</form> 

ただし、イベントハンドラーを別のJavaScriptに移動し、initiateという名前の関数に移動したいと思います。私のJavaScriptは次のようになります。

function formValidator(){

    var name = document.getElementById("name");
    var email = document.getElementById("email");


    if(isAlphabet(name, "Fill in name"))
    {

        if(emailValidator(email, "Fill in email"))
        {
            return true;
        }
    }


    return false;

}

function isAlphabet(elem, helpMsg)
{
    var alphaExp = /^[a-zA-Z]+$/;
    if(elem.value.match(alphaExp))
    {
        return true;
    }
    else
    {
        alert(helpMsg);
        elem.focus();
        return false;
    }
}

function emailValidator(elem, helpMsg)
{
    var emailExp = /^[\w\-\.\+]+\@[a-zA-Z0-9\.\-]+\.[a-zA-z0-9]{2,4}$/;
    if(elem.value.match(emailExp))
    {
        return true;
    }
    else
    {
        alert(helpMsg);
        elem.focus();
        return false;
    }
}


function initiate {
    // ..
}
window.onload = initiate;

これまでのところ、新しいWebページにリダイレクトするコードを作成する方法を理解しただけですが、それが有効なコードであるかどうかはチェックされません。私はこれを使用しました:

HTML

<form id="form">
Name:  <input type="text" id="name" /><br />
Email: <input type="text" id="email" /><br />
<input type="submit" value="Submit" />
</form>

Javascript

document.getElementById("form").action = "page.html";

.action="page.html"しかし、との両方が機能するように書く方法がわかりませんreturn validateForm()

4

1 に答える 1

1

フォームには:が必要idです

<form id="form">
Name:  <input type="text" id="name" /><br />
Email: <input type="text" id="email" /><br />
<input type="submit" value="Submit" />
</form> 

別のJavascriptファイル:

function initiate()
{
    var form = document.getElementById("form");
    form.action = "page.html";
    form.onsubmit = function validateForm()
    {
        var name = document.getElementById("name");
        var email = document.getElementById("email");


        if(isAlphabet(name, "Fill in name"))
        {

            if(emailValidator(email, "Fill in email"))
            {
                return true;
            }
        }

        return false;
    };
}

window.onload = initiate;

validateForm()何かが検証されなかった場合、関数がfalseを返していることを確認してください。

于 2013-01-15T02:56:27.063 に答える