Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 03.05.2013, 15:08
Аспирант
Отправить личное сообщение для vladimircape Посмотреть профиль Найти все сообщения от vladimircape
 
Регистрация: 25.01.2012
Сообщений: 95

Подскавка в input нужного шаблона
Хочу сделать чтобы в input поле был вставлен шаблон в только в него можно было вставлять данные, к примеру телефон
+7-(_ _ _) -_ _ _-_ _ - _ _
всё это в input , но вводить можно только там где нижнее подчёркивание
или для сайт
http://___________________
т.е. вводить только после http://
Удалить в input "http://" нельзя
Ответить с цитированием
  #2 (permalink)  
Старый 03.05.2013, 15:34
Аватар для ruslan_mart
Профессор
Отправить личное сообщение для ruslan_mart Посмотреть профиль Найти все сообщения от ruslan_mart
 
Регистрация: 30.04.2012
Сообщений: 3,018

vladimircape, для этого есть специальные типы input:
<input type="tel" />
<input type="url" />
Ответить с цитированием
  #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>


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

Но обычно так не делается )) А просто делается валидация и в случае неверного ввода всплывает подсказка мол введите так а не эдак.
Ответить с цитированием
  #4 (permalink)  
Старый 04.05.2013, 01:03
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,227

Сообщение от vladimircape
к примеру телефон
+7-(_ _ _) -_ _ _-_ _ - _ _
всё это в input , но вводить можно только там где нижнее подчёркивание
Чем не шаблон?

<span>
	+7 (
	<input type='text' size='3' />
	)-
	<input type='text' size='3' />
	-
	<input type='text' size='2' />
	-
	<input type='text' size='2' />
</span>
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
При добавлении DOCTYPE "плывут" размеры input type=text Demath (X)HTML/CSS 4 08.07.2012 19:27
Opera не выполняет style.fontSize=... в поле input Маэстро Opera, Safari и др. 6 20.06.2011 12:03
Изменение множества элементов Input по определённом призна Лавсановые Волокна Элементы интерфейса 1 24.12.2010 10:37
Копирование из одного input в другой input bar-boss Общие вопросы Javascript 7 08.04.2008 19:10
Разным элементам input - разное форматирование. Как? eclipse (X)HTML/CSS 1 25.10.2007 13:55