|
571 | 571 | }, false); |
572 | 572 | // input element keypress listener: end |
573 | 573 |
|
| 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 | + |
574 | 591 | // keys click listeners: begin |
575 | 592 | var keysClickListeners = function (input) { |
576 | 593 | // each key click listener: begin |
577 | 594 | var eachKeyElm = window.document.getElementById(kioskBoardVirtualKeyboard.id).getElementsByClassName('kioskboard-key'); |
578 | 595 | if (eachKeyElm && eachKeyElm.length > 0) { |
579 | 596 | for (var ekIndex = 0; ekIndex < eachKeyElm.length; ekIndex++) { |
580 | 597 | var keyElm = eachKeyElm[ekIndex]; |
581 | | - keyElm.addEventListener('click', function (e) { |
| 598 | + keysEventListeners(keyElm, function (e) { |
582 | 599 | e.preventDefault(); |
583 | 600 |
|
584 | 601 | // check input max & maxlength |
|
620 | 637 | // input trigger change event for update the value |
621 | 638 | input.dispatchEvent(changeEvent); |
622 | 639 | } |
623 | | - }, false); |
| 640 | + }); |
624 | 641 | } |
625 | 642 | } |
626 | 643 | // each key click listener: end |
627 | 644 |
|
628 | 645 | // capslock key click listener: begin |
629 | 646 | var capsLockKeyElm = window.document.getElementById(kioskBoardVirtualKeyboard.id).getElementsByClassName('kioskboard-key-capslock')[0]; |
630 | 647 | if (capsLockKeyElm) { |
631 | | - capsLockKeyElm.addEventListener('click', function (e) { |
| 648 | + keysEventListeners(capsLockKeyElm, function (e) { |
632 | 649 | e.preventDefault(); |
633 | 650 | // focus the input |
634 | 651 | input.focus(); |
|
644 | 661 | kioskBoardVirtualKeyboard.classList.add('kioskboard-touppercase'); |
645 | 662 | isCapsLockActive = true; |
646 | 663 | } |
647 | | - }, false); |
| 664 | + }); |
648 | 665 | } |
649 | 666 | // capslock key click listener: end |
650 | 667 |
|
651 | 668 | // backspace key click listener: begin |
652 | 669 | var backspaceKeyElm = window.document.getElementById(kioskBoardVirtualKeyboard.id).getElementsByClassName('kioskboard-key-backspace')[0]; |
653 | 670 | if (backspaceKeyElm) { |
654 | | - backspaceKeyElm.addEventListener('click', function (e) { |
| 671 | + keysEventListeners(backspaceKeyElm, function (e) { |
655 | 672 | e.preventDefault(); |
656 | 673 |
|
657 | 674 | // update the selectionStart |
|
674 | 691 | // input trigger change event for update the value |
675 | 692 | input.dispatchEvent(changeEvent); |
676 | 693 |
|
677 | | - }, false); |
| 694 | + }); |
678 | 695 | } |
679 | 696 | // backspace key click listener: end |
680 | 697 |
|
|
683 | 700 | var specialCharactersRowElm = window.document.getElementById(kioskBoardVirtualKeyboard.id).getElementsByClassName('kioskboard-row-specialcharacters')[0]; |
684 | 701 | // open |
685 | 702 | if (specialCharacterKeyElm && specialCharactersRowElm) { |
686 | | - specialCharacterKeyElm.addEventListener('click', function (e) { |
| 703 | + keysEventListeners(specialCharacterKeyElm, function (e) { |
687 | 704 | e.preventDefault(); |
688 | 705 | input.focus(); // focus the input |
689 | 706 | if (e.currentTarget.classList.contains('specialcharacter-active')) { |
|
693 | 710 | e.currentTarget.classList.add('specialcharacter-active'); |
694 | 711 | specialCharactersRowElm.classList.add('kioskboard-specialcharacter-show'); |
695 | 712 | } |
696 | | - }, false); |
| 713 | + }); |
697 | 714 | } |
698 | 715 | // close |
699 | 716 | var specialCharCloseElm = window.document.getElementById(kioskBoardVirtualKeyboard.id).getElementsByClassName('kioskboard-specialcharacter-close')[0]; |
700 | 717 | if (specialCharCloseElm && specialCharacterKeyElm && specialCharactersRowElm) { |
701 | | - specialCharCloseElm.addEventListener('click', function (e) { |
| 718 | + keysEventListeners(specialCharCloseElm, function (e) { |
702 | 719 | e.preventDefault(); |
703 | 720 | input.focus(); // focus the input |
704 | 721 | specialCharacterKeyElm.classList.remove('specialcharacter-active'); |
705 | 722 | specialCharactersRowElm.classList.remove('kioskboard-specialcharacter-show'); |
706 | | - }, false); |
| 723 | + }); |
707 | 724 | } |
708 | 725 | // specialcharacter key click listener: end |
709 | 726 |
|
|
764 | 781 | var isBrowserEdgeLegacy = userAgent.indexOf('edge') > -1; |
765 | 782 | var isBrowserInternetExplorer = userAgent.indexOf('.net4') > -1; |
766 | 783 | var isBrowserEdgeWebView = isBrowserEdgeLegacy && userAgent.indexOf('webview') > -1; |
767 | | - |
| 784 | + |
768 | 785 | if ((!isBrowserEdgeLegacy || isBrowserEdgeWebView) && !isBrowserInternetExplorer) { |
769 | 786 | 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 | + } |
775 | 792 | clearTimeout(scrollTimeout); |
776 | 793 | }, scrollDelay); |
777 | 794 | } else { |
|
0 commit comments