Fix 'inputchange' event handling in IE
diff --git a/wicket-core/src/main/java/org/apache/wicket/ajax/res/js/wicket-ajax-jquery.js b/wicket-core/src/main/java/org/apache/wicket/ajax/res/js/wicket-ajax-jquery.js
index 2b20d31..859370d 100644
--- a/wicket-core/src/main/java/org/apache/wicket/ajax/res/js/wicket-ajax-jquery.js
+++ b/wicket-core/src/main/java/org/apache/wicket/ajax/res/js/wicket-ajax-jquery.js
@@ -2604,20 +2604,20 @@
jQuery.event.special.inputchange.keyDownPressed = true;
});
- jQuery(this).on("cut paste", function (event) {
+ jQuery(this).on("cut paste", function (evt) {
var self = this;
if (false === jQuery.event.special.inputchange.keyDownPressed) {
window.setTimeout(function() {
- jQuery.event.special.inputchange.handler.apply(self, arguments);
+ jQuery.event.special.inputchange.handler.call(self, evt);
}, 10);
}
});
- jQuery(this).on("keyup", function (event) {
+ jQuery(this).on("keyup", function (evt) {
jQuery.event.special.inputchange.keyDownPressed = false; // reset
- jQuery.event.special.inputchange.handler.apply(this, arguments);
+ jQuery.event.special.inputchange.handler.call(this, evt);
});
} else {
@@ -2630,10 +2630,11 @@
jQuery(this).off("input keyup cut paste", jQuery.event.special.inputchange.handler);
},
- handler: function( event ) {
+ handler: function( evt ) {
var WE = Wicket.Event;
var k = jQuery.event.special.inputchange.keys;
- var kc = WE.keyCode(WE.fix(event));
+
+ var kc = WE.keyCode(WE.fix(evt));
switch (kc) {
case k.ENTER:
case k.UP:
@@ -2647,11 +2648,11 @@
case k.CTRL:
case k.HOME:
case k.END:
- return WE.stop(event);
+ return WE.stop(evt);
default:
- event.type = "inputchange";
+ evt.type = "inputchange";
var args = Array.prototype.slice.call( arguments, 0 );
- return jQuery(this).trigger(event.type, args);
+ return jQuery(this).trigger(evt.type, args);
}
}
};
diff --git a/wicket-core/src/test/js/event.js b/wicket-core/src/test/js/event.js
index b19c557..84b9a74 100644
--- a/wicket-core/src/test/js/event.js
+++ b/wicket-core/src/test/js/event.js
@@ -237,8 +237,9 @@
module("Custom events");
test('inputchange', function() {
+ stop();
if (Wicket.Browser.isIE()) {
- expect(4);
+ expect(3);
} else {
expect(1);
}
@@ -249,13 +250,13 @@
});
if (Wicket.Browser.isIE()) {
- $input.trigger("keydown");
+ $input.trigger("paste");
$input.trigger("keyup");
$input.trigger("cut");
- $input.trigger("paste");
} else {
$input.trigger("input");
}
+ start();
});
});