これを行う方法は、スクロールまたは ajax のどちらでページを更新するかによって異なります。
新しいページ情報でページをリロードするだけの場合は、以前に選択したアイテムを追跡するために何らかの状態が必要になります。これは、セッションまたは一時テーブルで実行できます。一時テーブルは、セッションのリセット後も存続し、サーバー ファームのシナリオで機能します。
いずれにしても、チェックボックスのクリックでページがポストバックされるか、次のページに投稿されます (いずれの場合も、post-redirect-get パターンを実行する必要があります)。ページが更新されたら、コレクションがダーティかどうかの指示を返し、送信ボタンを有効にする必要があります。
ユーザーが選択の途中で立ち去り、30 分後に戻ってくる可能性があることに注意してください。ログインがまだ有効で、セッションを使用している場合、セッションがリサイクルされた可能性があります。
Ajax を使用している場合は、実行中の変更リストを保持する必要があります。これにより、後でユーザーが選択を解除した場合に、送信ボタンを再度無効にできます。このリストを非表示フィールドに保持し、一時テーブルに発生したときに各チェックボックスを ajax で投稿するか、現在の合計を非表示のままにして、送信が呼び出されたときに変更を適用することができます。非表示フィールドには、変更した (チェックまたはチェックを外した) ID のリストが含まれている可能性があります。フィールドが空の場合はボタンを無効にし、そうでない場合は有効にします。