///
(function($) {
/*ページデータが変更されるかどうかを監視します*/
var pageDataChange = false;
var tagName = "入力、選択, Textarea" ;
var ctrlIds = [];
$.fn.MonitorDataChange = function(options) {
var deafult = {
arrTags: tagName, //コントロールの tagName 属性監視対象
arrCtrls : ctrlIds //監視対象外のコントロール ID
};
var ops = $.extend(default, options);
tagName = ops.arrTags; ;
/*要素が初めてフォーカスを取得したときに要素データをキャッシュします*/
$(ops.arrTags).one("focus", function() {
if ($.inArray() $(this).attr ("id"), ops.arrCtrls) != -1) {
return;
}
$(this).data('initData', $(this). val());
});
/*ページデータが変更されたかどうかを取得します*/
$.fn.isChange = function() {
$(tagName) .each(function() {
if ($.inArray($(this).attr("id"), ctrlIds) != -1) {
return;
}
/*要素の initData がデータをキャッシュする場合、その値は定義されていますが、その値と等しくなく、ページ内のデータが変更されたことを示します*/
if (typeof ($(this).data('initData')) != 'unknown ') {
if ( $(this).data('initData') != $(this).val()) {
pageDataChange = true;
}
} );
return pageDataChange;
})(jQuery);
コピーcode
コードは次のとおりです。