Паролингизни унутдингизми?
Login
Left, Right, Center Left, Center, Right Center, Left, Right



9-Dars JavaScript - JAVASCRIPT ДА ФОРМАЛАР

JAVASCRIPT ДА ФОРМАЛАР.

Формалар интернетда кенг ишлатилади. Формага киритилгпн маълумотлар тез – тез кайта серверга юборилади ёки бирор бир адресга элекетрон почта оркали жунатилади. Муаммо шундай, фойдаланувчи томонидан киритилган маълумот тугрилигига ишониш. Уни интернетга юборишдан олдин Java S тили ёрдамида осон текшириш мумкин. Олдин бу формани текшириш кандай булишини курсатмокчи эдик, кейин эса интернетга маълумот жунатишнинг кандай имкониятлари борлигини курсатамиз. Дастлаб биз оддий скрипт яратайлик. Айтайлик html-сахифа 2 та матн киритувчи элементга эга булсин. Улардан бирига фойдаланувчи уз исмини, 2 – сига электрон почта манзилини киритсин. Сиз у ерга бирор бир маълумотни киритиб тугмани босиб куринг.
Агар сиз у ерга хеч нарса киритмаган булсангиз хатолик юз бериш хакида маълумот оласиз. 1 – элементдаги исталган маълумот тугрилик жихатдан текширилади. Албатта агар фойдаланувчи бошка номни киритган булса у буларни кафолатламайди. Браузер хатоларни сонларга хам каршилик курсатмайди. Масалан, сиз ’17’ деб киритсангиз у холда сиз ‘Салом 17’ деган саломни оласиз. Демак, бу текшириш идеал була олмайди.
Форманинг 2 чи элементи бир мунча мураккабирокдир. Унга оддий сатр киргизиб, масалан исмингизни. Сиз унга @ ни ёзмагунча бу элемент иш бажармайди. @ белгини мавжудлиги билан фойдаланувчи электрон почта манзилини тугри киритган була олади. Гарчи маъносиз булсада биргина @ белгиниг узи хам бу шартга тугри келади.интернетдаги хар бир электрон почта манзилида @ белги катнашади. Шундай экан бу белгига текшириш бу ерда жуда уринли. Скрипт бу 2 та элемент билан кандай ишланди ва унда текшириш кай куринишда булади. Бу куйидагича олиб борилади:
<html>
<head>
<script language="JavaScript">
<!-- Скрыть

function test1(form) {
if (form.text1.value == "")
alert("Пожалуйста, введите строку!")
else {
alert("Hi "+form.text1.value+"! Форма заполнена корректно!");
}
}

function test2(form) {
if (form.text2.value == "" ||
form.text2.value.indexOf('@', 0) == -1)
alert("Неверно введен адрес e-mail!");
else alert("OK!");
}
// -->
</script>
</head>

<body>
<form name="first">
Введите Ваше имя:<br>
<input type="text" name="text1">
<input type="button" name="button1" value="Проверка" onClick="test1(this.form)">
<P>
Введите Ваш адрес e-mail:<br>
<input type="text" name="text2">
<input type="button" name="button2" value="Проверка" onClick="test2(this.form)">
</body>
</html>

Дастлаб </body> булимидаги кодни куриб чикамиз. Биз бу ерда факат 2 та тугмачани матн киритиш учун яратамиз. Бу тугмачалар test1(…) ва test2 (…) функцияларини кай бири босилганини караб чикаришда.
Функцияга аргумент сифатида this.form комбинациясини берамиз, чунки у кийинчилик бизга уша функцияга ва худди уша бизга керак элементга мурожат килишга рухсат беради. Test1 (form) функция берилган сатр бушлигини текширади. If (form.text1.value= = “”)… оркали бажарилади. Бу ерда узгарувчи ‘form’ га функция чакирилганда ‘this form’ дан олинган киймат берилади. Биз элементга киритилаётган сатрни form text ига value сузини кушиб аниклаб олишимиз мумкин. Сатр буш эмаслигига ишониш учун уни “ ” билан таккослаб курамиз. Агар киритилган сатр “ ” билан мос келса у холда сатрга хеч нима киритилмаган булади ва булардан фойдаланувчи хато хакида хабар кабул килади. Агар бирор бир нарса киритилган булса фойдаланувчи “ok” тасдигини олади. Кейинги муаммо шундан иборатки фойдаланувчи форма майдонига пробел киритиш мумкин ва бу тугри маълумот сифатида кабул килинади! Агар сида бу пробелларни олиб ташлаш истаги булса у холда албатта унга бу имкониятни текширишни кушишингиз мумкин. Энди test2(form) функциясини курамиз. Бу ерда яна киритилган сатр бушлик билан текширилади. (укувчи томонидан киритилган маълумот хакикатдан бор йуклигига ишониш учун). Лекин биз if буйругига яна нимадир кушдик. // белгилар йигиндиси “ok” буйруги деб аталади. If буйркги биринчи ва иккинчи таккослаш нима билан тугалланишини текширади. Агар булардан биттаси бажарилса if буйруги true кийматига эришади ва кейинги скрипт бажарилади. Суз билан тушунтирганда келтирилган сатр ёки буш ёки унда @ белгиси йуклиги хакида хатолик деган хабар оласиз. (if буйругидаги 2 чи оператор киритилган сатр @ белгисига эга эканлигини текширади).
Маълум бир белгилар борлигини текшириш.
Айрим холларда формага киритилаётганлар факат айрим белгилар ёки сонлардан иборат булиши яъни маълумотни чегаралаш керак булиб колади. Келтирилган маълумот факат сонлардан иборат булган телефон номерлари хакида эслашимиз кифоя. Бунда сизга келтирилган маълумотлар сонми йукми, шуни текшириш керак булади. Бу холатда мураккаблик шундан иборатки купчилик одамлар телефон номерларига яна хар хил белгилар, масалан, 01234-5678, 01234/56789 ёки 1234_56789 кушишлари мумкин. Фойдаланувчидан телефон номерларида бундай белгиларни фойдаланишини ман килиб булмайди. Шу боис биз скриптимизни сонлар ва бир неча белгиларни текширувчи процедурани кушишимиз керак. Скриптнинг дастлабки коди куйидагича:
<html>
<head>
<script language="JavaScript">
<!-- hide
function check(input) {
var ok = true;

for (var i = 0; i < input.length; i++) {
var chr = input.charAt(i);
var found = false;
for (var j = 1; j < check.length; j++) {
if (chr == check[j]) found = true;
}
if (!found) ok = false;
}

return ok;
}

function test(input) {

if (!check(input, "1", "2", "3", "4",
"5", "6", "7", "8", "9", "0", "/", "-", " ")) {

alert("Input not ok.");
}
else {
alert("Input ok!");
}
}

// -->
</script>
</head>

<body>
<form>
Telephone:
<input type="text" name="telephone" value="">
<input type="button" value="Check"
onClick="test(this.form.telephone.value)">
</form>
</body>
</html>

Share