When loaded this scripts triggers "change" event when DOM element with attribute contenteditable blurs (i.e. "blur" event is triggered). Event is triggered with two parameters: newValue and oldValue (see description).
<div contenteditable>w00t</div>
<script src="jquery.js">
<script src="contenteditable.js">
<script>
$("div").on("change",function(event,newValue,oldValue) {
console.log(newValue); // will output your new value
console.log(oldValue); // will output w00t
});
</script>
And edit div applying changes with ENTER.
Note: this script supports numbers (see below).
NOTE: this script modifies default browser behaviour: when you edit contenteditable and press enter then "blur" event is triggered.
"change" event is fired with two arguments:
newValue, oldValue:
-
oldValueis a value before user edited DOM element (i.e. before user clicked on it) -
newValueis a value after edit (i.e. after "blur" event)
This could be true: newValue === oldValue (e.g. user clicked on DOM element and then clicked somewhere else without editing anything).
DOM elements with css class is-number will be treated as follows:
-
If DOM element has css class
is-float(i.e it hasis-numberandis-floatclasses) then it is treated as container of a float number.Note:
,(comma) will be treated as.(dot). E.g.1,00-->1.00and1.00-->1.00. -
If DOM element DOESN'T have css class
is-floatthen it is treated as container of a integer number.
In both cases below statements are true:
typeof newValue === 'number'typeof oldValue === 'number'
In case there is no is-number class:
typeof newValue === 'string'typeof oldValue === 'string'
Other types (e.g. "object", "function") are not (yet) supported.
Note: this script uses delegated events (see "Direct and delegated events" in http://api.jquery.com/on/), so it will still work after you dynamically load new HTML.
Script uses jQuery (and therefore jQuery object should be available when script is loaded).
Script was developed using jQuery 1.8.0 and was written in TypeScript.