garplab / typingtube

24 stars 1 forks source link

【対策】ページを離脱するとき、確認ダイアログを表示する #58

Open Toshi7878 opened 4 years ago

Toshi7878 commented 4 years ago

ショートカットキーの誤押しでデータが消滅してしまうのを避けるためにページを離れるときに確認ダイアログを表示させたほうが良いと思います。 jqueryでコードを作成したので、良かったら反映をお願いします

$(function() {
  // フォームの入力欄が更新されたかどうかを表すフラグです。
var isChanged = false;

$(".btn-outline-success").click(function() {
    // 保存ボタンが押されたらフラグを落とします。
    isChanged = false;
  });
  $(window).bind("beforeunload", function() {
    if (isChanged) {
      // isChangedフラグがtrueの場合、つまり入力内容が変更されていた
      // 場合のみ文字列を返すようにします。
      return "このページを離れようとしています。";
    }
  });

  $("form input, form select, form textarea").change(function() {
    // 入力内容が更新されている場合は、isChangedフラグをtrueにします。
    isChanged = true;
  });
});
Toshi7878 commented 4 years ago

コードをさらに最適化しました

$(function() {
  // フォームの入力欄が更新されたかどうかを表すフラグです。
  var isChanged = false;

$("#save .btn-outline-success").click(function() {
    // 保存ボタンが押されたらフラグを落とします。
    isChanged = false;
  });
  $(window).bind("beforeunload", function() {
    if (isChanged) {
      // isChangedフラグがtrueの場合、つまり入力内容が変更されていた
      // 場合のみ文字列を返すようにします。
      return "このページを離れようとしています。";
    }
  });

  $("[type='text']").change(function() {
    // 入力内容が更新されている場合は、isChangedフラグをtrueにします。
    isChanged = true;
  });
});