0

いくつかのコードを入手しました(コピーして貼り付けたものを読んでください)

var catcher = function() {
  var changed = false;
  $('form').each(function() {
if ($(this).data('initialForm') != $(this).serialize()) {
  changed = true;
  $(this).addClass('changed');
} else {
  $(this).removeClass('changed');
}
});
if (changed) {
return 'One or more forms on this page have changed.  Are you sure you want to leave this page?';
  }
};

$(function() {
$('form').each(function() {
$(this).data('initialForm', $(this).serialize());
}).submit(function(e) {
var formEl = this;
var changed = false;
$('form').each(function() {
  if (this != formEl && $(this).data('initialForm') != $(this).serialize()) {
    changed = true;
    $(this).addClass('changed');
  } else {
    $(this).removeClass('changed');
   }
   });
  if (changed && !confirm('Another form on this page has been changed. Are you sure you want to continue with this form submission?')) {
e.preventDefault();
} else {
$(window).unbind('beforeunload', catcher);
}
});
$(window).bind('beforeunload', catcher);
});

さて...このコードは複数のフォームを処理し...ページを離れるすべての方法を巧みに認識し、保存されていないデータがある可能性があることを警告します。

私はコードと格闘しましたが、それは私を超えています。

私がやろうとしていることは

a)ページのアンロードを待つのではなく、一部のデータが変更されたときにイベントをトリガーし、divに「データ変更」を入力します。

b) スクリプトの機能を 1 つの形式に減らす可能性があります。

どんな助け、アドバイス、またはアイデアもありがたく受け入れます。

意思

4

1 に答える 1

1

http://jsfiddle.net/colbycallahan/9rxLx/

フォームの入力に対する変更を検出し、変更された入力値を div に入力します。

$('#myForm').on('change', 'input, select', function(){
    $('#div_id').text($(this).val());    
});

フォームのアクションを変更し、リセットして、送信できないようにします。

$('#myForm').on('submit', function(event){
    event.preventDefault();
    alert($(this).serialize());
    alert('form action is: ' + $(this).attr('action'));

    $('#myForm')[0].reset();
    $('#myForm').attr('action', 'Your_New_Url');

    return false;
});
于 2013-10-25T03:24:35.797 に答える