このためのjsfiddleはhttp://jsfiddle.net/whDm6/18/にあります
次のコードでアラートのコメントを解除し、フォームの値を変更してページを更新すると、アラートが表示されます。したがって、コードはその時点まで実行されていることがわかります。ただし、アラートをコメントアウトしたままにすると、期待どおりにアンロード前のボックスが表示されません。
bindを使用し、基本的なwindow.onbeforeunload = function(){}をJqueryでバインドせずに使用してみましたが、いずれも機能しませんでした。
Jquery1.8.2の使用
var currentUlValues = {};
currentUlValues['input1'] = "red";
currentUlValues['input2'] = "blue";
needToConfirm = true;
$(window).on('beforeunload', function(){
if (needToConfirm) {
$.each(currentUlValues, function(key, value) {
var elem = $("#"+key).val();
if (typeof elem !== 'undefined') {
if (elem != currentUlValues[key]) {
//alert(elem + " - " + currentUlValues[key]);
return 'Are you sure you want to leave?';
}
}
});
}
});
HTMLフォーム
<form>
<input id="input1" name="input1" type="text" value="red" />
<input id="input2" name="input2" type="text" value="blue" />
</form>