Показать сообщение отдельно
  #3 (permalink)  
Старый 03.05.2013, 22:46
Аспирант
Отправить личное сообщение для edison Посмотреть профиль Найти все сообщения от edison
 
Регистрация: 01.04.2013
Сообщений: 58

внизу пример, но он не доделан и неверен, когда я понял, что не по тому пути пошел, мой интерес пропал))
<input type="text" id="tel" value="+7-(___)-___-__-__" onkeyup="testtel(this);"/>
<script>
function testtel(el){
	var str=el.value.split(/[^\d\+-_\(\)]/).join(''); // or replace
	var regexi=/^\+7-\(([\d_]{0,4})\)-([\d_]{0,4})-([\d_]{0,3})-([\d_]{0,3})$/;
	var result=regexi.exec(str);
	var n;
	if(!result){
		var regexfif=/7?([\d_]{3})([\d_]{3})([\d_]{2})([\d_]{2})/;
		result=regexfif.exec(str.split(/[-\)\(]/).join(''));
		if(!result){
			el.value='+7-(___)-___-__-__';
			return;
		}else{
			str='+7-('+result[1]+')-'+result[2]+'-'+result[3]+'-'+result[4];
		}
	}
	result=regexi.exec(str);
	var didreg=/^\d+$/;
	for(var i=1;i<5;i++){
		switch (i){
			case 1:
				n=3;
				break;
			case 2:
				n=3;
				break;
			case 3:
				n=2;
				break;
			case 4:
				n=2;
				break;
		}
		while(result[i].length!=n){
			if(result[i].length>n){
				if(didreg.test(result[i])){
					result[i+1]=''+result[i][result[i].length-1]+result[i+1];
					result[i]=result[i].substring(0,result[i].length-1);
				}
				else result[i]=result[i].replace(/_/,'');
			}
			else result[i]=result[1]+'_';
		}
	}
	if(document.selection){                                               // Для IE
		var s=document.selection.createRange();
		el.value='+7-('+result[1]+')-'+result[2]+'-'+result[3]+'-'+result[4];
		s.select();
	}else{                                                               // Opera, FireFox, Chrome
		var start=el.selectionStart;
		var end=el.selectionEnd;
		el.value='+7-('+result[1]+')-'+result[2]+'-'+result[3]+'-'+result[4];
		el.setSelectionRange(start,end);
	}
}
</script>


по факту нужно просто запретить на поле ввод символов кроме цифр, потом распаршивать на цифры и подставлять шаблон к этим номерам, т.е верхняя часть функции отпадает, потом просто позицию курсора выставлять верно )
А с урлом там вообще ерунда, проверка на начало ссылки, чтобы была хттп

Но обычно так не делается )) А просто делается валидация и в случае неверного ввода всплывает подсказка мол введите так а не эдак.
Ответить с цитированием