Как определить скобки нажатия клавиш для автоформатирования поля ввода? - PullRequest
0 голосов
/ 21 декабря 2018

В основном я пишу логику для поля ввода для автоформатирования, т. Е. (44) 12345-6789 , чтобы при вводе телефонного номера автоматически появлялись круглые скобки и дефис.В настоящее время, когда пользователь вводит 4, первые круглые скобки появляются, однако, если пользователь начинает с ввода первых круглых скобок '(' текущая логика дублирует круглые скобки.

С некоторой онлайн-помощью я создал логику, которая позволяет только целые числаэтот код здесь http://jsfiddle.net/cL8spo31/

С некоторыми изменениями, чтобы приспособить вышеуказанный вариант использования (если использование начинается с ввода '('), код здесь, но он не работает. http://jsfiddle.net/L3ko6c97/

//Format the phone number as the user types it
            document.getElementById('textfield_e244').addEventListener('keyup', function(evt) {
                /* console.log('keyup34') */

                var phoneNumber = document.getElementById('textfield_e244');
                if(phoneNumber.value.indexOf('(') > -1){
                console.log('Bracket Yes')

                }else{
                var charCode = (evt.which) ? evt.which : evt.keyCode;
                phoneNumber.value = phoneFormat(phoneNumber.value);
                                    console.log('Bracket No')

                }
            });

           /*  document.getElementById('textfield_e244').addEventListener('change', function(evt) {
                console.log('change34')
                var phoneNumber = document.getElementById('textfield_e244');
                var charCode = (evt.which) ? evt.which : evt.keyCode;
                phoneNumber.value = phoneFormat(phoneNumber.value);
            }); */


            // We need to manually format the phone number on page load
            document.getElementById('textfield_e244').value = phoneFormat(document.getElementById('textfield_e244').value);

            // A function to determine if the pressed key is an integer
            function numberPressed(evt) {
                var charCode = (evt.which) ? evt.which : evt.keyCode;
                if (charCode > 31 && (charCode < 48 || charCode > 57) && (charCode < 36 || charCode > 40)) {
                    return false;
                }
                return true;
            }

            // A function to format text to look like a phone number
             function phoneFormat(input) {


                // Strip all characters from the input except digits
                // input = input.replace(/\D/g, '');

                // Trim the remaining input to ten characters, to preserve phone number format
                input = input.substring(0, 25);

                // Based upon the length of the string, we add formatting as necessary
                var size = input.length;
                console.log('size '+ size);

                function backSpace(){
                            var key = event.keyCode || event.charCode;
                            var lastChar = input[input.length -1];
                            console.log('lastChar' + lastChar);
                            if( key == 8 && (lastChar == "-" ||  lastChar == ")")){ 
                                    console.log('BACKSPACE1');

                                    input = '' + input.slice(0, -1);
                            }
                }

                if (size == 0) {
                    input = input;
                } else if (size < 2) {
                     console.log('first');

                            input = '(' + input;

                     backSpace(); 
                } else if (size < 5) {
                     console.log('sec')
                     input = input.substring(0, 4) + ') ';
                     backSpace(); 
                } else if (size < 10) {
                     console.log('sec1.2') 

                    input = input.substring(0, 4) + input.substring(4, 9);
                      backSpace();
                } else if (size < 16) {
                     console.log('third');
                    input = input.substring(0, 4) +  input.substring(4, 9) + '-';

                        backSpace();

                } 
                return input;



            }  

Я бы очень признателен за помощь здесь.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...