Javascript在IE中工作,但在Chrome中不工作
我试图通过javascript检测文本、textarea和下拉列表的更改,因此在卸载窗口时,浏览器将提示您有未保存的更改。我的代码与IE完美结合,但在Chrome中却非常不稳定。这是我的密码Javascript在IE中工作,但在Chrome中不工作,javascript,google-chrome,cross-browser,Javascript,Google Chrome,Cross Browser,我试图通过javascript检测文本、textarea和下拉列表的更改,因此在卸载窗口时,浏览器将提示您有未保存的更改。我的代码与IE完美结合,但在Chrome中却非常不稳定。这是我的密码 var ctr = 1; var isFirstLoad = true; function propertyChangedByCode() { ctr = 0; propertyChanged() } function propertyChan
var ctr = 1;
var isFirstLoad = true;
function propertyChangedByCode() {
ctr = 0;
propertyChanged()
}
function propertyChanged() {
$('[id$=SaveButton]').removeAttr("disabled");
$('[id$=SaveButton]').removeAttr("class");
$('[id$=SaveButton]').addClass("btn btn-primary");
warnMessage = 'Warning: You have unsaved changes.';
window.onbeforeunload = function () {
if (ctr == 0) {
return warnMessage
}
else if (ctr == 1) {
ctr = 0;
}
}
}
$("body").click(function (event) {
console.log(event.target);
if (event.target.type == "submit" && event.target.value != "Save" && event.target.value != "Cancel" && event.target.value != "Next") {
ctr = 0;
propertyChanged();
console.log("BODY clicked");
}
});
function pageLoad() {
jQuery("input.datepicker").dp({
dateFormat: 'M d, yy',
altFormat: 'yy-mm-dd',
buttonText: '<i class="icon icon-calendar"></i>',
showOn: 'both'
});
$("button.ui-datepicker-trigger").addClass('btn right');
console.log("PageOnLoad: " + ctr);
var warnMessage = 'Warning: You have unsaved changes.';
$('input[type="text"],select,textarea').each(function (k, v) {
var elem = $(this);
// Save current value of element
elem.data('oldVal', elem.val());
// Look for changes in the value
elem.bind("change keyup input paste", function (event) {
// If value has changed...
if (elem.data('oldVal') != elem.val()) {
propertyChanged();
}
});
});
$('.btn').click(function (e) {
console.log("whatever");
ctr = 1;
});
//ui-datepicker-trigger
$('.ui-datepicker-trigger').click(function (e) {
console.log("date");
ctr = 0;
});
if (isFirstLoad) {
window.onbeforeunload = null;
$('[id$=SaveButton]').attr("disabled", "disabled")
ctr = 1;
console.log("Disable");
isFirstLoad = false;
}
}
if语句在Chrome中第一次加载时返回true,而在IE中返回false。第一次加载时应为false,因为在IE中没有进行任何更改。在IE中工作。非常高兴听到。你这么说是什么意思?通常大多数问题在Chrome中工作得很好,而不是在IE中?但你的情况正好相反。为了表示我的兴奋,我提到了它。不管怎样,你能发布一个JSFIDLE来重现这种行为吗?是的。这真的很奇怪。我一直在为此绞尽脑汁。但是我不能从中得到任何东西。哈哈。这个问题让我很震惊,因为大多数时候,如果它在IE中工作,它在Chrome中也会工作。你能制作一个JSFIDLE来重现这个错误吗?在此之前,请检查chrome控制台中的错误。如果有任何工作或与我们分享。
elem.bind("change keyup input paste", function (event) {
ctr = 0;
// If value has changed...
if (elem.data('oldVal') != elem.val()) {
propertyChanged();
}
});