質問

私は、フォームと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が同じページ上でそれを維持する必要があるにもかかわらずです。別のページに移動処理以外にも、私の解決策は何ですか?

役に立ちましたか?

解決

それは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();
    }
}

他のヒント

、送信ボタンのonclickイベントを使用して、フォームのをonSubmitイベントを使用しないでください。

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

あなたはそれを識別するために、フォームにid属性を追加することもできます。

JavaScriptコードに結合事象を維持します。ないあなたのHTMLのインライン属性に、あなたのコードがよりmaintanableとデバッグが容易になります。

試してください:

return answer;

関数の最後にとonclickの方法がこれを返すことを確認してください。これと同様ます:

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

この関数はfalseを返すようにして掲載されていない形式になります。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top