0

テキストボックスまたはテキストエリアが変更されたときに「isModified」をtrueに設定するjqueryの確認(「保存する前に終了してもよろしいですか?」)があります。問題は、ボタン (保存..) を押すと確認が表示されることです。

ボタンを押したときに確認をスキップさせる方法はありますか?

// Confirm leaving page
var isModified = false;
var modifiedMsg = 'Are you sure?';

$('textarea,input').change(function(){
    if(!isModified){
        isModified = true;
      }
  });        

window.onbeforeunload = function(){
    if(isModified){
        return modifiedMsg;
     }
  };  
4

3 に答える 3

1

実際、ボタンも同じであればinput type="submit"、セレクターに入る資格があります。属性付きのセレクターを使用して指定できます

$('textarea,input[type=text]')

またはでフィルタリングしないで使用しますinput[type=submit]

于 2012-04-27T05:46:55.043 に答える
1

汚いチェックをしようとしているようです。次の変更を行うことができます。

どのボタンが押されているかを把握しようとする代わりに、本当に気になるのは (私が推測しているように)、フォームを送信するときですか?

$('form').submit(function(e) {
   isFormSubmitting = true;
});

次に、ダーティチェックで、両方が適切に設定されていることを確認してください。フォームを送信するとダーティな状態が一掃される可能性があるため、フラグを 1 つだけ使用するのは危険です。

$(window).unload(function(e) {
    if(isModified && !isFormSubmitting){
        return modifiedMsg;
     }
});
于 2012-04-27T06:21:35.013 に答える
1

これを試して

$('textarea,input[type!="submit"],input[type!="button"]')
于 2012-04-27T05:49:48.477 に答える