В основном я пишу логику для поля ввода для автоформатирования, т. Е. (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;
}
Я бы очень признателен за помощь здесь.