Skip to content

Commit ff4c54c

Browse files
authored
Merge pull request #53 from surexxx/patch-5
Add long press feature
2 parents b88454f + 79f2c47 commit ff4c54c

File tree

1 file changed

+33
-16
lines changed

1 file changed

+33
-16
lines changed

src/kioskboard.js

Lines changed: 33 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -571,14 +571,31 @@
571571
}, false);
572572
// input element keypress listener: end
573573

574+
// keys event listeners: begin
575+
var keysEventListeners = function (keyElement, onClickHandler) {
576+
if (keyElement) {
577+
var isTouchableDevice = 'ontouchend' in window || window.navigator.maxTouchPoints > 0;
578+
579+
if (isTouchableDevice) {
580+
keyElement.addEventListener('contextmenu', function (event) {
581+
event.preventDefault();
582+
}, false);
583+
keyElement.addEventListener('touchend', onClickHandler);
584+
} else {
585+
keyElement.addEventListener('click', onClickHandler);
586+
}
587+
}
588+
};
589+
// keys event listeners: end
590+
574591
// keys click listeners: begin
575592
var keysClickListeners = function (input) {
576593
// each key click listener: begin
577594
var eachKeyElm = window.document.getElementById(kioskBoardVirtualKeyboard.id).getElementsByClassName('kioskboard-key');
578595
if (eachKeyElm && eachKeyElm.length > 0) {
579596
for (var ekIndex = 0; ekIndex < eachKeyElm.length; ekIndex++) {
580597
var keyElm = eachKeyElm[ekIndex];
581-
keyElm.addEventListener('click', function (e) {
598+
keysEventListeners(keyElm, function (e) {
582599
e.preventDefault();
583600

584601
// check input max & maxlength
@@ -620,15 +637,15 @@
620637
// input trigger change event for update the value
621638
input.dispatchEvent(changeEvent);
622639
}
623-
}, false);
640+
});
624641
}
625642
}
626643
// each key click listener: end
627644

628645
// capslock key click listener: begin
629646
var capsLockKeyElm = window.document.getElementById(kioskBoardVirtualKeyboard.id).getElementsByClassName('kioskboard-key-capslock')[0];
630647
if (capsLockKeyElm) {
631-
capsLockKeyElm.addEventListener('click', function (e) {
648+
keysEventListeners(capsLockKeyElm, function (e) {
632649
e.preventDefault();
633650
// focus the input
634651
input.focus();
@@ -644,14 +661,14 @@
644661
kioskBoardVirtualKeyboard.classList.add('kioskboard-touppercase');
645662
isCapsLockActive = true;
646663
}
647-
}, false);
664+
});
648665
}
649666
// capslock key click listener: end
650667

651668
// backspace key click listener: begin
652669
var backspaceKeyElm = window.document.getElementById(kioskBoardVirtualKeyboard.id).getElementsByClassName('kioskboard-key-backspace')[0];
653670
if (backspaceKeyElm) {
654-
backspaceKeyElm.addEventListener('click', function (e) {
671+
keysEventListeners(backspaceKeyElm, function (e) {
655672
e.preventDefault();
656673

657674
// update the selectionStart
@@ -674,7 +691,7 @@
674691
// input trigger change event for update the value
675692
input.dispatchEvent(changeEvent);
676693

677-
}, false);
694+
});
678695
}
679696
// backspace key click listener: end
680697

@@ -683,7 +700,7 @@
683700
var specialCharactersRowElm = window.document.getElementById(kioskBoardVirtualKeyboard.id).getElementsByClassName('kioskboard-row-specialcharacters')[0];
684701
// open
685702
if (specialCharacterKeyElm && specialCharactersRowElm) {
686-
specialCharacterKeyElm.addEventListener('click', function (e) {
703+
keysEventListeners(specialCharacterKeyElm, function (e) {
687704
e.preventDefault();
688705
input.focus(); // focus the input
689706
if (e.currentTarget.classList.contains('specialcharacter-active')) {
@@ -693,17 +710,17 @@
693710
e.currentTarget.classList.add('specialcharacter-active');
694711
specialCharactersRowElm.classList.add('kioskboard-specialcharacter-show');
695712
}
696-
}, false);
713+
});
697714
}
698715
// close
699716
var specialCharCloseElm = window.document.getElementById(kioskBoardVirtualKeyboard.id).getElementsByClassName('kioskboard-specialcharacter-close')[0];
700717
if (specialCharCloseElm && specialCharacterKeyElm && specialCharactersRowElm) {
701-
specialCharCloseElm.addEventListener('click', function (e) {
718+
keysEventListeners(specialCharCloseElm, function (e) {
702719
e.preventDefault();
703720
input.focus(); // focus the input
704721
specialCharacterKeyElm.classList.remove('specialcharacter-active');
705722
specialCharactersRowElm.classList.remove('kioskboard-specialcharacter-show');
706-
}, false);
723+
});
707724
}
708725
// specialcharacter key click listener: end
709726

@@ -764,14 +781,14 @@
764781
var isBrowserEdgeLegacy = userAgent.indexOf('edge') > -1;
765782
var isBrowserInternetExplorer = userAgent.indexOf('.net4') > -1;
766783
var isBrowserEdgeWebView = isBrowserEdgeLegacy && userAgent.indexOf('webview') > -1;
767-
784+
768785
if ((!isBrowserEdgeLegacy || isBrowserEdgeWebView) && !isBrowserInternetExplorer) {
769786
var scrollTimeout = setTimeout(function () {
770-
if (isBrowserEdgeWebView) {
771-
window.scrollBy(0, theInputOffsetTop);
772-
} else {
773-
window.scrollTo({ top: scrollTop, left: 0, behavior: scrollBehavior });
774-
}
787+
if (isBrowserEdgeWebView) {
788+
window.scrollBy(0, theInputOffsetTop);
789+
} else {
790+
window.scrollTo({ top: scrollTop, left: 0, behavior: scrollBehavior });
791+
}
775792
clearTimeout(scrollTimeout);
776793
}, scrollDelay);
777794
} else {

0 commit comments

Comments
 (0)