JSFiddle - React, Tailwind, and code Playground
HTML
<html>
<body>
<div>
<input type="text" value="this is my text1" />
<input type="text" value="this is my text2" />
<input type="text" value="this is my text3" />
</div>
<div>
<select>
<option selected="selected">-- choose --</option>
<option>my option1</option>
<option>my option2</option>
<option>my option2</option>
</select>
</div>
<div>
<a href="http://idg.se">idg.se</a>
</div>
</body>
</html>
JavaScript
var FormChangeListener = function(txt, saveClass) {
if (!(this instanceof arguments.callee)) {
throw new Error("Constructor called as a function");
}
var warningtext = txt || 'Changes are made. Do you want to navigate away from this page?',
controleOnClass = saveClass || 'savecontrole';
isChanged = function() {
return dojo.query('.isChanged').length > 0;
};
this.setup = function(nodeSelector) {
var selector = nodeSelector || 'input:not([type=button]):not([type=submit]), select';
dojo.query(selector).onchange(function() {
if (!dojo.hasClass(this, 'isChanged')) {
dojo.addClass(this, 'isChanged');
}
});
//borde funkat med dojo.addOnUnLoad() men nej...
window.onbeforeunload = function() {
if (isChanged()) {
return warningtext;
}
};
};
};
dojo.addOnLoad(function() {
var f = new FormChangeListener();
f.setup();
});