Как то понравился ваш вариант,
nerv, хотя у
рони задать паттерн можно. Вобщем вроде бы разобрался в обоих способах, особой разницы для меня нет что использовать.
Вопрос такой: сложно ли сделать чтоб контролировалась вставка из буфера?
Выложу окончательный вариант, вдруг кому понадобится (jQuery) :
$.fn.formatPnoneNumber = function(){
return this.each(function(){
$(this).bind('keyup', function(){
var num = this.value.replace( '+ 7' , '' ).replace( /\D/g, '' ).split( /(?=.)/ ), i = num.length;
if ( 0 <= i ) num.unshift( '+ 7' );
if ( 1 <= i ) num.splice( 1, 0, ' ' );
if ( 4 <= i ) num.splice( 5, 0, ' ' );
if ( 7 <= i ) num.splice( 9, 0, '-' );
if ( 9 <= i ) num.splice( 12, 0, '-' );
if ( 11 <= i ) num.splice( 15, num.length - 15 );
this.value = num.join( '' );
});
});
};