問題
スピナーがあり、前のフィールドからのぼかし、またはスピナーのフォーカスなど、ダイアログ ボックスでスピン プロセスを中断する場合、ダイアログが閉じられると、スピン上でマウスが押されたかのようにスピナーがスピン プロセスを続行します。ボタン、無限ループのように。
ポイントを説明するjsfiddleを作成しました.2つのスピナーと変更イベントの確認ダイアログで構成されています。
無限の回転を見るには:
- 例のページで説明されているように、確認ダイアログをトリガーします。
- ダイアログをクリアします (「OK」または「キャンセル」ボタンを使用できます)。
- スピナー コントロールのボタンの上にマウスを置きます。
- スピナーゴーを見てください!
\Edit - 発火していない mouseleave コードがあります。それが問題だと思います。これを手動で実現できるかどうかを調べます
試した回避策
- 確認が表示される前に他のスピナーを無効にしてから、状態がクリアされることを期待して再度有効にしようとしましたが、うまくいきません。
- 私の状況では、注文フォームでスピナーを使用しています。私は確認を最大数量チェックに使用します。ユーザーが確認した場合は値が許可され、そうでない場合は以前の値に戻されます。確認をスピンイベントに入れてみましたが、ユーザーがキーボードを使用して入力フィールドを更新すると、これは発生しません。
- また、マウス/キーを押すたびに発生する停止イベントでも試しました。ただし、スピナーの最大数が 999 であり、確認が 12 などの非常に低いさまざまな値で表示されるため、これはうまく機能しませんでした。したがって、ユーザーが 130 を入力したい場合、入力時に確認ダイアログが表示されます。 3、これは予期しない動作です。このシナリオは発生する可能性が最も低いため、これが私の回避策になる可能性があることに注意してください。
- また、スピン イベントでチェックするフラグを設定して、2 番目のスピナーのスピンをキャンセルできるようにしました。これは機能し、回転を防ぎますが、フラグが設定解除されるとすぐに問題が発生します。フォーカスと blus を 2 番目のスピナー (またはその他のスピナー) に適用しても効果はなく、実際のスピナー ボタンにぼかしを適用しても効果はありません。
すべてのブラウザに影響する jQuery UI 1.9 スピナーのバグを特定したと思います。これはマイルストーン 8 に存在します。修正されるまで、もう少し知識のある人がこれに対する回避策を教えてくれることを願っています (お願いします!)。発行されます...
これは jQuery UI ライブラリのバグだと思うので、jQuery フォーラムでこの質問をしました。そこで何か聞いたら、この質問を更新し続けます。