0

私は次のことを達成しようとしています:

ユーザーがチェックボックスを含む div("productListMatch") の外側をクリックすると、チェックボックスのいずれかがオンになっている場合、確認アラートが表示され、チェックボックスの選択がそこに保存されていないことがユーザーに通知されます。

つまり、チェックした項目が保存されているかどうかを確認しています。その場合は、ユーザーに通知し、保存するかどうかを選択できるようにします。

これは私がやったことです:

function formCheckboxConfirm() {
    $('html').click(function() {
        var elem = document.getElementById('frm-list-product').elements;
        for (i = 0; i < elem.length; i++) {
            if(elem[i].type == "checkbox" && elem[i].checked) {
                confirm("You have made changes! Do you want to proceed without saving your changes?");
                break;
            }
        }
});

    $(".productListMatch").click(function(e) {
        e.stopPropagation(); // I thought this would stop all link clicks, but it's not working as I expected.
    });
}

これは一般的に機能しますが、リンクでは機能しません。それらがクリックされると、それらは引き続き実行され、確認アラートを受け取ります。

注: Web ページの div の外には、多数のナビゲーション リンクがあります。「productListMatch」div 自体は jquery タブ (2 つ目の 2 つ目) 内のコンテンツの一部であるため、「productListMatch」div を表示するためだけにタブをクリックする必要があります。

私が欲しいのはこれです:

  • チェックボックス (および [保存] ボタン) 以外のリンクがクリックされた場合
    • リンクの実行を停止する
      • チェックボックスがチェックされているかどうかをチェックします
        • チェックボックスがオンの場合は、確認アラートを提供します
          • ユーザーが [OK] をクリックすると、Web ページは最初にクリックされたリンクを続行します
          • ユーザーが「キャンセル」をクリックすると、ウェブページは最初にクリックされたリンクを続行しません
        • チェックボックスがチェックされていない場合、確認アラートはなく、Web ページは最初にチェックされたリンクを続行します

いくつかのシナリオを試しましたが、リンクを停止することはできますが (preventDefault を使用しました)、リンクを再開する方法がわかりません。おそらく、私はこの全体について間違っています。

助けていただければ幸いです。

ありがとう。

スティーブン

4

1 に答える 1

1

このconfirm()関数は、テストする必要があるブール値を返します。例えば:

if confirm("You have made changes! Do you want to proceed without saving your changes?") {
   // continue or whatever 
} else {
   return false; // or break or whatever
}
于 2011-08-09T13:34:10.997 に答える