0

ページの変更を処理するための確認を作成したいと考えています。たとえばgmail、他の多くのWebサイトには、ページのフィールドを変更したり、ページを離れたり、フォーム入力をクリアしたりするときに、サイトが変更を保存するのに役立つ確認ダイアログを作成するシステムがあります忘れました。これが私の解決策ですが、もっと良い方法があるかどうか疑問に思っています。また、プロジェクトはJSFプロジェクトであり、primefaces 3.4
ソリューションを使用しています:
1. グローバルjs変数を作成します

var isChanges = false;
  1. 変更メソッドのすべての入力フィールドにハンドラーを配置します。

< p:inputText value="#{someMB.someValue}" id="id" onkeydown="isChanges=true">< /p:inputText>
または
< p:selectOneMenu value="#{someMB.someValue}" id= "#{cc.attrs.id}" >
< p:ajax event="change" onsuccess="isChanges=true" />
< /p:selectOneMenu>
など....


ユーザーがページを離れたか、フォーム入力をクリアしたかを検出します。

< script language="JavaScript">
  window.onbeforeunload = confirmExit;
  function confirmExit()
  {
      if(isChanged && window.confirm("sometext")){
        // Call servers save method
      }
  }

< /script>
4

1 に答える 1

2

私の Web アプリケーションでは、次のようにします。

  1. noHashページが読み込まれると、特別なクラスを除くすべてのフォームを取得します
  2. 上記のステップで見つかったフォームごとに、特別なnoHashクラスのフィールドを除くすべてのフィールドを取得します
  3. 「var1=1&var2=2[...]」のような文字列でフィールド名と値をシリアル化します
  4. 上で定義した文字列の sha1 を計算します
  5. 結果をグローバル変数として保存します

次に、ユーザーが移動しようとすると、上記のようにハッシュを再計算し、ハッシュが異なるかどうかを確認します。異なる場合は、ページを離れる前にユーザーに確認を求めます。

これはすべてJavaScript を使用して行われるため、サーバー側のスクリプト言語とは無関係であることに注意してください。

于 2012-11-13T09:52:00.897 に答える