4

フォームとJavascriptの確認の送信に問題があります。基本的に、「送信」ボタンを押すと、次のJavascriptが呼び出されます。

function confirmation() {
    var answer = confirm("Are you sure you wish to edit?")
    if (answer)
    {
        window.location = "#editform2";
    }
}

ただし、[OK]ではなく[キャンセル]を押すと、アドレスバーを監視していて、#editform2に更新されないため、Javascriptは正しく実行されます。ただし、フォームは引き続き送信されます。ページを更新しているようです。フォームの関連部分は次のとおりです。

//Form is encoded in PHP
<form method=\"post\">
//Form is in here
<input type=\"submit\" value=\"Edit\" onclick=\"confirmation()\">

そのため、フォームはどこに行くのかわからず、ページを更新するだけで、ページはたまたまプロセッサでもあります。したがって、[キャンセル]をクリックしても処理中であり、Javascriptは同じページに保持する必要があります。処理を別のページに移動する以外に、私の解決策は何ですか?

4

3 に答える 3

6

これはsumbitボタンであり、フォームはすべての場合に送信されるため、このように機能します。フォームにIDを割り当て、入力タイプを変更します。

<form method="post" id="formid">
<input type="button" value="Edit" onclick="confirmation()">

クリックするとこの関数が呼び出されます。

function confirmation() {
    var answer = confirm("Are you sure you wish to edit?")
    if (answer)
    {
        document.getElementById("formid").submit();
    }
}
于 2009-08-31T07:56:57.507 に答える
4

送信ボタンのonclickイベントは使用せず、フォームのonsubmitイベントを使用してください。

document.forms[0].onsubmit = function () {
    return confirm("Are you sure you wish to edit?");
}

フォームを識別するために、フォームにid属性を追加することをお勧めします。

JavaScriptコードでイベントバインディングを維持します。HTMLのインライン属性ではなく、コードをより保守しやすく、デバッグしやすくします。

于 2009-08-31T08:01:57.323 に答える
1

試す:

return answer;

関数の最後で、onclickメソッドがこれを返すことを確認してください。そのようです:

<input type="submit" value="Edit" onclick="return confirmation()">

これにより、関数はfalseを返し、フォームは投稿されません。

于 2009-08-31T07:54:35.840 に答える