1

ユーザーがページを離れるときに、ページ上で複数のフォームを送信する機能が必要です。この「あなたは救いたいですか?」があります。質問とこれまでの私のコードは次のようなものです:

function checkForChanges( ) {
  if (window.formform1Changed == true) {
    if (window.asked == false) {
      window.asked=true;
      doSave = confirm("Wanna save? Click OK")
    }
    if (window.doSaveForms || doSave) {
      window.doSaveForms = true;
      document.forms.form1.submit();
    }
  }
  if (window.formform2Changed == true) {
    if (window.asked == false) {
      window.asked=true;
      doSave = confirm("Wanna save? Click OK.")
    }
    if (window.doSaveForms || doSave) {
      window.doSaveForms = true;
      document.forms.form2.submit();
    }
  }
}

少しやり過ぎに見えるかもしれませんが、テンプレートエンジンによって自動的に生成され、より多くのフォームに拡張される可能性があります。

ボディタグ:

<body
 onLoad="init();
         window.formform1Changed=false;
         window.asked=false;
         window.doSaveForms=false;
         window.formform2Changed=false;"
 onbeforeunload="checkForChanges();">

そして、一方のフォームの興味深い部分(もう一方は同じように見えます:

<input value="xyz" id="la" onchange="window.formform1Changed=true;" />
<input name="save" onclick="window.formform2Changed=false; window.formform1Changed=false;" type="submit" value="save" />

ここで問題があり ます。両方のフォームの値を変更してページから移動すると、最初のフォームの質問がポップアップ表示されます。[OK]をクリックすると、フォームは保存されform1.submit()ますが、新しいonBeforeUnloadイベントがトリガーされ、アイデアのロジック全体が壊れます。

ここでの問題は、ユーザーが移動したときに1回だけ質問するときに、ページ上のすべてのフォームを送信する方法があるかどうかです。

どんな助けでも大歓迎です!

ありがとう。

4

2 に答える 2

1

フォームの送信にはポストバックが必要です。最初のフォームを送信すると、ページはそのフォームの「アクション」にリダイレクトされ、残りのフォームの情報は失われます。

ページに複数のフォームを含めることは最善のアイデアではありませんが、どうしても必要な場合は、すべてのフォームを保存する方法は、完全なポストバックをWebサービス(またはスタンド)へのAJAX呼び出しに置き換えることです。 -クエリ文字列パラメータを受け入れる単独のページ。ただし、安全性や柔軟性はそれほど高くありません)。そうすれば、ページをリダイレクトせずに、AJAX呼び出しを介して各フォームを送信できます。

于 2010-03-10T15:50:40.870 に答える
0

SLaksが言ったように、あなたが試みている方法で複数のフォームを提出することはできません。ただし、他にもいくつかのオプションがあります。従来のフォーム送信の代わりに、ある種のajax呼び出しを行って、気になるフォームデータを保存することができます。これはjqueryとphpを使用した例です(リンク

于 2010-03-10T15:51:41.647 に答える