0

実際に送信される前にjavascript関数を使用してフォームを検証したかったので、イベントリスナーを使用してasp:button(送信)のアクションを防止しました。

formInstance.addEventListener('submit', function (event) {
    event.preventDefault(); 
}, false);

ボタンは次のとおりです。

<asp:Button ID="btnCreateForm" CssClass="submit-form button" runat="server" 
    Text="Save Form" OnClick="btnCreateForm_Click" 
        OnClientClick="Sharpforms.checkFormEntry()" />

解雇されたJavaScript:

checkFormEntry: function () {
    var formName = document.getElementById("txtFormName");

    if (formName.value.trim() == "") {
        alert("Please fill in a valid form name!");
        return false;
    }
    else {
        //formInstance.submit();
        return true;
    }
}

どうやら、ページがリロードされているため、javascript submit()はフォームを送信しますが、ASP側のbtnCreateForm_Click関数にはもう入らないことを認識しました。

protected void btnCreateForm_Click(object sender, EventArgs e)
{
    System.Diagnostics.Debug.WriteLine("Test if the button has been clicked.");
}

私のフォームイベントリスナーとsubmit()にコメントを付けてネイティブに送信しようとすると、彼は問題なくクリック関数に入ります。しかし、クライアント側でフォームを確認することはできません。私は何が欠けていますか?

4

1 に答える 1

0

OnClientClickイベントにreturnを追加する必要があります。関数がtrueを返す場合、ポストバックが発生します。関数がfalseを返す場合、ポストバックはキャンセルされます。

<asp:Button ID="btnCreateForm" CssClass="submit-form button" runat="server" 
    Text="Save Form" OnClick="btnCreateForm_Click" 
        OnClientClick="return Sharpforms.checkFormEntry()" />

また、この方法でイベントリスナーを削除できます。

于 2012-09-02T03:05:18.067 に答える