問題タブ [jquery-dirtyforms]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
javascript - Jquery Forms: memento パターンを使用してダーティ フォーム通知システムを構築する - 既存のパターン?
現在、ページから移動する前にフォームが変更されたことをユーザーに通知するスクリプトを作成しています (これは ASP.NET MVC アプリです)。
最初に、ユーザーが入力を変更したかどうかを検出する簡単なスクリプトの作成から始め、少しひっくり返してフォームを「ダーティ」として指定しました。
これは単純すぎて、拡張フォーム入力のサポートが不足していたので、次にプラグインを試しました。
私が見つけた最高のものはこれでした: http://mal.co.nz/code/jquery-dirty-forms/
この jquery ダーティ フォーム プラグインはかなりうまく機能しますが、私が必要とする重要な機能が 1 つ欠けています。以前の値をユーザーが入力した値と比較する機能。
たとえば、テキスト フィールドに元々「Foo Bar」という値があり、ユーザーがその値を「Foo」に変更した場合、フォームはダーティになります。
ユーザーがそのテキスト ボックスの値を "Foo Bar" に戻してから、このプラグインを使用すると、フォームは依然として "ダーティ" のままであり、これは私の要件では正しくありません。
必要な機能を実行するプラグインがないため、独自のプラグインを作成する必要があります。このような機能を構築するためのベスト プラクティスは何ですか?
私の考えはこれでした:
- このアプリは MVC であるため、次の技術を使用できます。
- jquery
- json
- データ注釈
私の最初の考えは次のとおりです。
- ページには多くのフォームを含めることができます。各フォームには、最初は false に設定された属性「isDirty」があります。
- 比較する各フィールドの元の値を保存する必要があります(メモ)
- 各フィールドには、そのフィールドを「ハイライトなど」で呼び出すクラス/フラグ/属性「isDirty」を含めることができます。
- これらのフィールド値を JSON NVP データ構造に格納できます
- 送信時に、JavaScript はその JSON 文字列を調べて元の値を調べ、現在の値と比較します。無効な場合は、ダーティ ルールに違反するテキスト フィールドに「ダーティ」フラグ (クラス名を追加) を追加します。 .
パフォーマンスと再利用性は明確な考慮事項です。このパターンを任意のフォームに適用できるはずであり、ほとんど作業を行わずに元の値を使用して検証を実行できるようにする必要があります。
私のニーズに似た既存のパターンを見た人はいますか? 私のアイデアは実現可能ですか?誰かが私が取ることができるより良いルートについて意見を持っていますか? 拡張できるコード サンプルから始めるのは素晴らしいことですが、疑似コードも良いでしょう。
[アップデート]
私がやろうとしていることは一般に「フォームスタッシュ」として知られていますが、Googleはその検索用語にはあまり役に立ちません。
私が取り組んできたこのスクリプトは、私がやりたいことと似ています: (このページから: http://www.mydogboris.com/2009/10/using-jquery-data-feature-to-detect-form-変更/ )
jquery - JQuery DirtyForms プラグインの使用例
jQuery DirtyForms プラグインを使用して、ユーザーが誤って保存せずにページを離れないようにしています。ダイアログ ボックスで問題が発生しています。キャンセルと保存しないという 2 つのボタンがあります。
キャンセル アクションは正しく機能しています。ダイアログが閉じ、新しいページは読み込まれません。ただし、保存しないアクションは機能しません。新しいページがロードされるはずですが、ロードされていません。
明らかな何かが欠けているに違いありません。誰かが私が間違ったことを見ることができますか?
ありがとうございました!
-スティーブ
jquery - jQuery Dirtyforms - ネイティブブラウザのconfirm()をダイアログとして使用することは可能ですか?
彼らのサイトの例では、通常、facebox や jquery-ui などの jquery ダイアログが使用されていることを前提としています。ネイティブ ブラウザの confirm() をダイアログとして使用することは可能ですか? もしそうなら、OKボタンとキャンセルボタンをバインドする方法はありますか?
forms - dirtyforms jQueryプラグインを使用したDropDownList
jQuery プラグインの dirtyForms を使用して、フォームが汚れているかどうかを確認したいと思います。しかし、DropDownList は標準の select HTML タグに基づいていないようです。代わりに使用しているようです
javascript - DirtyForms で動作するカスタム ダイアログを取得できません
DirtyFormsを使用していますが、プラグインの基本機能は動作しています。ユーザーがページから移動しようとすると、ブラウザーは確認ダイアログをスローします。
モーダル確認には jQuery UI のダイアログを使用しています。これを DirtyForms で動作させようとしています。これには、jQuery UI ダイアログを直接参照する例があります。ページから直接例を使用してカスタム ダイアログを設定していますが、jQuery ダイアログを使用しておらず、ブラウザのネイティブ ダイアログを引き続き使用しています。
プラグインのデバッグをオンにすると、エラー (またはその他の JS エラー) は表示されませんが、モーダル ダイアログは起動せず、ブラウザーのネイティブ ダイアログのみが起動します。同じページに実装された他の jQuery UI ダイアログが機能します。ここで何が欠けているのかわかりません。どんな助けや洞察も大歓迎です。
jquery - フォームで何も変更されていない場合に表示される警告ボックス
このプラグインが使用されているフォームで何も変更が行われておらず、ユーザーがフォームを終了すると、保存されていない変更のアラート ボックスが表示されます。 forms .THis はそのプラグインのリンクです
https://github.com/snikch/jquery.dirtyforms
特定のフォームのIDを使用して使用しました
jquery - エラー: iFrame のプロパティ 'ドキュメント' へのアクセスが拒否されました
jqueryを使用して、ソースを持つ動的iframeを別のドメインに追加する親htmlページがあります。これを許可するように X-Frame-Options を既に設定しており、プレーン コンテンツの読み込みは問題ありません。実際、私の他のすべてのスクリプトは正常に動作しているようです。
iFrame に読み込まれる html ページは、$(document)のような行がいくつかあるjQuery DirtyForms プラグインを使用します。ダーティ フォーム コードと jQuery スクリプトはどちらも、iframe のドキュメントに対してローカルです。
これらの行のいずれかが実行されると、Firefox で次のエラーが表示されます (他のブラウザーはテストしていません)。
親ページが子のスクリプトにアクセスしようとしている場合、またはその逆の場合、これは問題のようですが、私の場合、エラーのあるスクリプトは子にローカルです。
ところで。iFrame 内にロードされていない場合、子コードは完全に機能します。
私は今、回避策を見つけるのに途方に暮れています。
$(document) がどういうわけか親として評価されていると思います。
この動作を修正する方法はありますか? おそらく、プラグインのコードを変更することによって。おそらく、$(document).find('contentWindow')...??
助けてくれてありがとう!ありがとう。
javascript - コントロールがフォームをダーティにしないようにするにはどうすればよいですか?
私はこれを使用しています: https://github.com/snikch/jquery.dirtyforms$('form').dirtyForms();
からフォームが汚れているかどうかを確認します。ただし、私のページには、単にフィルタリングに使用されるドロップダウンがいくつかあります(フォームを「ダーティ」にするべきではありません)。現在、これらのドロップダウンのいずれかを選択すると、フォームが汚れます。jquery.dirtyforms を使用して (ドキュメントを読みましたが、方法がわかりません)、クラス名を使用してセレクター (ドロップダウン、テキストボックスなど) を除外し、フォームがダーティーとしてマークされないようにする方法を教えてください。
これらのドロップダウン/フィルターを呼び出すクラスを割り当てるなど、さまざまなことを試しignoreDirty
ました。その後、jqueryでこれを行いました。
$('form').dirtyForms().ignoreClass('ignoreDirty');
これによりエラーが発生するため、何か間違ったことをしているに違いありません。プロパティを介して設定しようとしたことにも注意してください:
$('form').dirtyForms({ ignoreClass : "ignoreDirty" });
ignoreDirty
ただし、これにより、クラス名が「これらのフィルターがポストバックを引き起こすことに注意してください」であるコントロールのフォームは依然としてダーティになりますが、フォームに移動して単一の変更を加えていないとしましょう。これらのフィルターをクリックし始めると、投稿された瞬間に次のことが起こります。