Вы можете сделать это, используя быстрый JavaScriptфункция.
Если ваш HTML выглядит следующим образом:
<input type="text" id="phoneNumber"/>
Ваша функция JavaScript может быть просто:
// 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,10);
// Based upon the length of the string, we add formatting as necessary
var size = input.length;
if(size == 0){
input = input;
}else if(size < 4){
input = '('+input;
}else if(size < 7){
input = '('+input.substring(0,3)+') '+input.substring(3,6);
}else{
input = '('+input.substring(0,3)+') '+input.substring(3,6)+' - '+input.substring(6,10);
}
return input;
}
Конечно, вы будете нуждаться в прослушиватель событий:
document.getElementById('phoneNumber').addEventListener('keyup',function(evt){
var phoneNumber = document.getElementById('phoneNumber');
var charCode = (evt.which) ? evt.which : evt.keyCode;
phoneNumber.value = phoneFormat(phoneNumber.value);
});
И если вы не сохраните телефонные номера в виде отформатированных строк (я не рекомендую это делать), вы захотите очистить нечисловой символ актеры перед отправкой значение что-то вроде:
document.getElementById('phoneNumber').value.replace(/\D/g,'');
Если вы хотите, чтобы увидеть это в действии с бонусом фильтрации входных данных, проверить эту скрипку:
http://jsfiddle.net/rm9vg16m/
Если вам необходимо применять эту конвенцию, а не играть вокруг с тем, что они печатая, рассмотреть вопрос о предоставлении пользователю 3 поля ввода, '() - ' с парой _placeholders_, чтобы дать им намеки о что писать (т.е.ваш '123 456 7890') –
Чтобы добавить к чему @PaulS. сказал, даже лучше было бы позволить им входить в ценность, как им нравится, и, пока они ввели 10 цифр, автоформатируйте их ввод в желаемый формат, на 'blur' (или' change'. ваше предпочтение). Ex. Вход: ** 1234567890 ** или ** 123-456-7890 ** или ** 123 456!? @ # 7890 **. , , Вывод (во всех случаях): ** (123) 456 - 7890 ** – talemyn