Показать сообщение отдельно
  #32 (permalink)  
Старый 23.09.2008, 10:28
Аватар для Kos
Kos Kos вне форума
Аспирант
Отправить личное сообщение для Kos Посмотреть профиль Найти все сообщения от Kos
 
Регистрация: 01.09.2008
Сообщений: 79

А я еще вывод подсказки добавил!!!

function setMask(I,M){
				M = M.split('');
				M2 = M.join('|');
				if (/z/.test(M2)) M2 = M2.replace(/z/g,'[a-z]');
				else if (/я/.test(M2)) M2 = M2.replace(/я/g,'[а-яё]');
				else if (/a/.test(M2)) M2 = M2.replace(/a/g,'[a-zа-яё]');
				else if (/\*/.test(M2)) M2 = M2.replace(/\*/g,'[a-zа-яё0-9]');
				M2 = M2.replace(/\(/g,'\\(').replace(/\)/g,'\\)').replace(/\//g,'\\/').replace(/9/g,'\\d').replace(/\./g,'\\.');
				
				var r = new RegExp(M2,'i'), d=document, c='character', y=-100000;
				
				function V(){
					setTimeout(function(k){
						s=I.gC()[0];
						var a=I.value.split(''),x=[];
						for(var i=0;i<a.length;i++)if(r.test(a[i]))x.push(a[i]);else {s--; ShowHint(I, M); }
						I.value=x.join('');
						I.sC(s);
					},0)
				}
				
				I = typeof I=='string' ? d.getElementById(I) : I;
				I.onkeypress = function(e){
					e=e||event;
					if(e.ctrlKey||e.shiftKey)return true;
					V();
					return true
				}
				I.sC = function(l,g){
					if(this.setSelectionRange) this.setSelectionRange(l,l);
					else {
						g = this.createTextRange();
						g.collapse(true);
						g.moveStart(c,y);
						g.move(c,l);
						g.select();
					}
				}
				I.gC = function(r,b){
					if (this.setSelectionRange) return [this.selectionStart,this.selectionEnd];
					else {
						r = d.selection.createRange();
						b = 0-r.duplicate().moveStart(c,y)
						return [b,b+r.text.length]
					}
				}
				
				if (d.all&&!window.opera) I.onpaste=V;
				else I.addEventListener('input',V,false)
			}
			
			var Hint = document.createElement('div');
			
			Hint.style.display = 'none';
			
			Hint.style.fontFamily = 'Arial';
			Hint.style.fontSize = '8pt';
			Hint.style.color = '#000000';
			
			Hint.style.border = '1px solid #7D8891';
			Hint.style.backgroundColor = '#FFFFE1';
			Hint.style.padding = '1px 5px';
			
			Hint.style.position = 'absolute';
			Hint.style.zIndex = '100'; 
				
			function ShowHint(I, M) {
				if (Hint.timer_id) {
					window.clearTimeout(Hint.timer_id);
					Hint.style.display = 'none';
				}
				
				var w = parseInt(I.offsetWidth); 
				var h = parseInt(I.offsetHeight);
				
				var t = 0; 
				var l = 0; 
				var obj = I; 
				while(obj) { 
					t += parseInt(obj.offsetTop);   
					l += parseInt(obj.offsetLeft); 
					obj = obj.offsetParent;     
				}
				
				if (M != '') {
					var MSG = 'Разрешено вводить только следующие символы: ';
					for (i = 0; i < M.length; i++) {
						if (i > 0) MSG += ' ';
						
						if (M[i] == 'a') MSG += '<strong>буквы русского и латинского алфавитов</strong>';
						else if (M[i] == 'z') MSG += '<strong>буквы латинского алфавита</strong>';
						else if (M[i] == 'я') MSG += '<strong>буквы русского алфавита</strong>';
						else if (M[i] == '9') MSG += '<strong>цифры</strong>';
						else if (M[i] == '*') MSG += '<strong>буквы русского и латинского алфавитов цифры</strong>';
						else if (M[i] == ' ') MSG += '<strong>знак пробела</strong>';
						else MSG += '<strong>' + M[i] + '</strong>';
					}
				} else MSG = 'Запрещено вводить какие-либо символы.';
				
				Hint.style.top = t + 2 + 'px'; 
				Hint.style.left = l + w + 10 + 'px';
				
				Hint.innerHTML = MSG;
				
				Hint.style.display = 'block';
				
				Hint.timer_id = setTimeout('HideHint()', 4000);
			}
			
			function HideHint() {
				Hint.style.display = 'none';
				Hint.timer_id = undefined;
			}
			
			function SetHint() {
				document.body.appendChild(Hint);
			}
			
			if (typeof document.attachEvent != 'undefined') window.attachEvent('onload', SetHint);
			else window.addEventListener('load', SetHint, false);
Ответить с цитированием