blob: fd40790cfdb2fd53258a37735f03c9859efdcfc7 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
|
/*!
* Trigger a textchange event on text change in input fields.
* And make it cross browser compatible.
*
* @author Santhosh Thottingal, 2013
* @see https://gist.github.com/mkelly12/424774
*/
( function () {
'use strict';
$.event.special.textchange = {
setup: function () {
$( this )
.data( 'lastValue', $( this ).val() )
.on( 'keyup.textchange', $.event.special.textchange.handler )
.on( 'cut.textchange paste.textchange input.textchange', $.event.special.textchange.delayedHandler );
},
teardown: function () {
$( this ).off( '.textchange' );
},
handler: function () {
$.event.special.textchange.triggerIfChanged( $( this ) );
},
delayedHandler: function () {
var $element = $( this );
setTimeout( function () {
$.event.special.textchange.triggerIfChanged( $element );
}, 25 );
},
triggerIfChanged: function ( element ) {
var current = element.val();
if ( current !== element.data( 'lastValue' ) ) {
element.trigger( 'textchange', [ element.data( 'lastValue' ) ] );
element.data( 'lastValue', current );
}
}
};
}() );
|