[IMP] web_tour: tour utils
Changed the triggering of some events to dispatch native events instead of jQuery ones and extended the api of the keydown helper to support text keys.
This commit is contained in:
committed by
Vincent Schippefilt
parent
b0941d19a0
commit
2cfa68b571
@@ -81,7 +81,11 @@ var RunningTourActionHelper = core.Class.extend({
|
||||
|
||||
text = text || "Test";
|
||||
if (values.consume_event === "input") {
|
||||
values.$element.trigger("keydown").val(text).trigger("keyup").trigger("input");
|
||||
values.$element
|
||||
.trigger({ type: 'keydown', key: text[text.length - 1] })
|
||||
.val(text)
|
||||
.trigger({ type: 'keyup', key: text[text.length - 1] });
|
||||
values.$element[0].dispatchEvent(new InputEvent('input'));
|
||||
} else if (values.$element.is("select")) {
|
||||
var $options = values.$element.children("option");
|
||||
$options.prop("selected", false).removeProp("selected");
|
||||
@@ -128,17 +132,31 @@ var RunningTourActionHelper = core.Class.extend({
|
||||
},
|
||||
_keydown: function (values, keyCodes) {
|
||||
while (keyCodes.length) {
|
||||
var keyCode = +keyCodes.shift();
|
||||
values.$element.trigger({type: "keydown", keyCode: keyCode});
|
||||
if ((keyCode > 47 && keyCode < 58) // number keys
|
||||
|| keyCode === 32 // spacebar
|
||||
|| (keyCode > 64 && keyCode < 91) // letter keys
|
||||
|| (keyCode > 95 && keyCode < 112) // numpad keys
|
||||
|| (keyCode > 185 && keyCode < 193) // ;=,-./` (in order)
|
||||
|| (keyCode > 218 && keyCode < 223)) { // [\]' (in order))
|
||||
document.execCommand("insertText", 0, String.fromCharCode(keyCode));
|
||||
const eventOptions = {};
|
||||
const keyCode = keyCodes.shift();
|
||||
let insertedText = null;
|
||||
if (isNaN(keyCode)) {
|
||||
eventOptions.key = keyCode;
|
||||
} else {
|
||||
const code = parseInt(keyCode, 10);
|
||||
eventOptions.keyCode = code;
|
||||
eventOptions.which = code;
|
||||
if (
|
||||
code === 32 || // spacebar
|
||||
(code > 47 && code < 58) || // number keys
|
||||
(code > 64 && code < 91) || // letter keys
|
||||
(code > 95 && code < 112) || // numpad keys
|
||||
(code > 185 && code < 193) || // ;=,-./` (in order)
|
||||
(code > 218 && code < 223) // [\]' (in order))
|
||||
) {
|
||||
insertedText = String.fromCharCode(code);
|
||||
}
|
||||
}
|
||||
values.$element.trigger({type: "keyup", keyCode: keyCode});
|
||||
values.$element.trigger(Object.assign({ type: "keydown" }, eventOptions));
|
||||
if (insertedText) {
|
||||
document.execCommand("insertText", 0, insertedText);
|
||||
}
|
||||
values.$element.trigger(Object.assign({ type: "keyup" }, eventOptions));
|
||||
}
|
||||
},
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user