Napraviti jednu formu za unos podataka. Na formi će se nalaziti sledeći podaci: ime, prezime, mail i matični broj. 
Dodati validaciju na kontrole ove forme, tako da korisnik može da unese samo odgovarajuće podatke (u ime i prezime samo slova, u mail samo mail, a u matični broj samo brojeve).

BoxROx
12.01.2015
Одељци: Зид Питања и одговори Ивица BoxROx | Кључне речи:
1

Коментари:

Нови одговор Нови коментар

Одговори:

Приказано 1-1 од 1 ставке.

Регуларни изрази су низови знакова који садрже узорке за претраживање стрингова. За тестирање и учење препоручујем онлајн тестер регуларних израза. Ограничавање уноса у поља: име, презиме и матични број у наведеном решењу се обавља истом функцијом, izbaciZabranjene, која као други параметар узима регуларни израз. У случају имена и презимена, регуларним изразом /[^a-ш]/i тражимо знак који се не налази у опсегу знакова од латиничног a до ћириличног ш, писаних великим или малим словима. Ознака за почетак регуларног израза је / и има сличну улогу као знак навода " при дефинисању стринга. На крају регуларног израза може се наћи комбинација модификатора: i, g и m. Модификатор i означава да се ради о претрази која не разликује велика и мала слова. Функција izbaciZabranjene се позива сваки пут када корисник отпусти тастер са тастатуре и проверава да ли унети текст садржи недозвољене знакове. Све док их садржи функција брише последње унете знакове.

Код уноса мејла кориснику није ограничено шта сме да унесе, већ је унос обојен црвено све док корисник не унесе исправан мејл. За проверу исправности мејла употребљен је следећи регуларни израз: /^[A-Z0-9._%+-]+@([A-Z0-9-]+\.)+[A-Z]{2,4}$/i .

Симбол ^ се поклапа са почетком стринга. Класа знакова [A-Z0-9._%+-] означава опсеге дозвољених карактера А-Z 0-9, тачку, доњу црту, проценат, плус и минус. Препознати знак се мора појавити најмање једном или више пута, што је дефинисано ознаком +.  Након ове групе знакова обавезно мора да следи знак @. Део мејл адресе до и закључно са знаком @ упоређује се изразом ^[A-Z0-9._%+-]+@. 

Део мејл адресе иза знака @ упоређује се са изразом ([A-Z0-9-]+\.)+[A-Z]{2,4}$. Израз ([A-Z0-9-]+\.)+ се поклапа са групом знакова A-Z, 0-9 и знаком минус, иза којих обавезно мора да следи тачка. Таква група мора да се појави бар једном, а може и више пута.  Регуларни израз се завршава узорком  [A-Z]{2,4}$ где [A-Z]{2,4}означава групу знакова A-Z који се понављају најмање 2, а највише 4 пута. Ознака $ се поклапа са завршетком стринга.

Овај регуларни израз неће радити за сваки мејл, међутим требало би да је довољан у реалним условима. На следећој адреси: линк до комплетног регуларног израза за валидацију мејла, доступан је аутоматски генерисан регуларни израз који по речима аутора обухвата комплетну RFC спецификацију, али који по мом мишљењу није употребљив. Овде је поменут само ради илустрације колико валидација мејл адресе може да буде комплексна.

Комплетан код програма је приказан у прозору испод:

<!DOCTYPE html>
<html>
<head>
  <meta charset="UTF-8"/>
  <title>Валидација форме</title>
</head>
<body>
	<h1>Валидација форме</h1>
	<form onsubmit="return validacijaForme()" >
		<label>Име</label>
		<input onkeyup="izbaciZabranjene(this, /[^a-ш]/i);" type="text"/>	
		<label>Презиме</label>
		<input onkeyup="izbaciZabranjene(this, /[^a-ш]/i);" type="text"/>		
		<label>ЈМБГ</label>		
		<input onkeyup="izbaciZabranjene(this, /[^0-9]/);" type="text"/>	
		<label>И-мејл</label>		
		<input id="email" onkeyup="validanMejl(this)" onblur="validanMejl(this);" type="text"/>	
		<button>Пошаљи форму</button>
	</form>

	<script>
		function izbaciZabranjene(obj,regex)
		{			
			while(obj.value.match(regex) !== null)
				obj.value = obj.value.substring(0, obj.value.length-1);
		}
		
		function validanMejl(obj)
		{
			obj.value = obj.value.trim();			
			if(obj.value.match(/^[A-Z0-9._%+-]+@([A-Z0-9-]+\.)+[A-Z]{2,4}$/i) === null)
			{
				obj.style.color = 'red';
				return false;
			}
			obj.style.color = 'green';
			return true;
		}		
		function validacijaForme()
		{
			var emailInput = document.getElementById('email');
			var validan = validanMejl(emailInput);
			if( ! validan)
				emailInput.focus();
			return validan;
		}
	</script>
</body>
</html> 

 

Ивица
13.01.2015
Одељци: Зид Питања и одговори Ивица | Кључне речи:
0

Коментари:

Нови коментар

©Библиотека++ 2019 Развој сајта Ивица Лазаревић