各行に 3 つのテキスト入力ボックスがあり、99 行を表示する大きな「注文フォーム」XPage があります。変更をキャプチャするために、各入力ボックスの「onchange」イベントに SSJS 関数の呼び出しを配置しました。この呼び出しでは、製品 ID、変更の種類 (どの列)、および数量が送信されるだけです。次に、SSJS 関数は、これらの変更を sessionScope 変数 (java.util.HashMap) に保存します。変更に関連する更新はありません。
ユーザーが「送信」ボタンをクリックすると、変更がまとめて処理されます。これは、すべての変更をバックエンドの Domino データベースに単純に書き込む別の SSJS 関数です。
それはすべてうまくいくようで、数年間うまくいっています。しかし、私のユーザーはアプリケーションを効率的に使いすぎており、タイピング速度が追いつかないほど速くなっているようです。
私のデバッグ コードは、各変更をサーバーのコンソールに書き込みます。ユーザーがすばやく連続して変更を加えた場合 (入力ボックス間をタブで移動するだけ)、一部の変更が単純に無視される場所を確認できます。サーバーが前の変更を処理するのに忙しすぎて、ある変更をスキップして別の変更に移るかのようです。場合によっては、変更のブロック全体が失われ、アプリケーションが可能なときにバックアップを取得します。
変更をキャプチャするために間違った手法を使用していませんか? アプリケーションが毎回 onchange イベントを開始するようにするためにできることはありますか?
IE8/9 & FF24 を使用してこれをテストしました。代わりに「onkeyup」イベントを使用することを提案する他のそのような投稿を見てきました。ユーザーは 2 桁の数量を注文する可能性があるため、私の場合はうまくいかないと思います。
任意/すべての提案をいただければ幸いです。