![]() |
![]() |
![]()
Post
#1
|
|
![]() Grupa: Zarejestrowani Postów: 60 Pomógł: 1 Dołączył: 6.12.2007 Ostrzeżenie: (0%) ![]() ![]() |
Potrzebuje zrobic na stronie tzw. Active validate. Wiec jak mam formularz lub\i formularze to za pomoca JS zbieram liste wszystkich pol. Chcialbym aby wartosci pol wraz z ich ID gdy urzytkownik wprowadzi dane zostaly poddane wlidacji poprzez AJAX wyslane do serwera, ktory sprawdzi ktore pole jest walidowane oraz sprawdzi jego wartosc po czym odpowie zwracajac 1 gdy wartosc pola jest nieprawidlowa(np. za malo jest znakow).
Wszystko jest dobrze tylko ja nie-chce dopisywac do kazdego pola wartosci onchange="blabla" tyko aby skryt sam mi zliczyl pola i oczekiwal na zdazenia z danego pola. Probowalem zapisac taki oto kod Nasz formularz: Kod <form id="rejestracja" method="post" action="index.html"> <input type="text" id="FIRST_NAME" name="FIRST_NAME"/> <input type="text" id="LAST_NAME" name="LAST_NAME" /> <input type="text" id="EMAIL" name="EMAIL" /> <input type="submit" id="SUBMIT" value="rejestruj" /> </form> Skrypt zwracajacy tablice ID wszystkich pol, z wszystkich formow w dokumencie: Kod <script> var formsNo=document.forms.length; var tab=new Array(); for(var i=0; i < formsNo; i++){ inputsNo=document.forms[i].elements.length; for(c=0; c<inputsNo; c++ ){ element=document.forms[i].elements[c]; tab.push(element.id); } </script> Wiec jak mam formulaz to skrypt powyzej zlicza pola i ID tych pol zapisuje do tablicy "tab". Jak teraz zrobic aby przy zdarzeniu onchange zostal wykonany jakis skrypt, probowalem zapisac do tej tablicy: Kod "document.forms[i].elements[c].onchange=function(){alert(document[forms[i].elements[c].id);}" ...aby przy zdarzeniu onchange wykonala sie funkcja i wyswietli mi okienko z ID pola formularza, taki zapis mi niedziala bo do tablicy zapisuje mi stringi gdy wyswietlilem sobie zawartosc jednego pole w tej tablicy to mialem forms[i].elements[c] niepodstawialo mi wartosci "i" i "c".Zatem jak napisac ta funkce aby oczekiwala na zdarzenie pochodzace z pola formularza?? Oraz aby ta funkcja niebyla z dokumencie ale w sekcji head Ten post edytował Beynar 25.12.2007, 11:51:09 |
|
|
![]() |
![]()
Post
#2
|
|
![]() Grupa: Zarejestrowani Postów: 45 Pomógł: 0 Dołączył: 5.12.2004 Ostrzeżenie: (0%) ![]() ![]() |
A nie możesz po prostu zrobić tak:
Kod onload = function() {
for(var i = 0; i < document.forms.length; i++) { var frm = document.forms[i]; for(var j = 0; j < frm.elements.length; j++) { frm.elements[j].onchange = onchangeCallback; } } } function onchangeCallback() { alert(this.form.id + ': ' + this.id); } |
|
|
![]()
Post
#3
|
|
![]() Grupa: Zarejestrowani Postów: 60 Pomógł: 1 Dołączył: 6.12.2007 Ostrzeżenie: (0%) ![]() ![]() |
dobrze wszystko ok ale czy moge jakos tak zrobic zeby ten skrypt byl w head albo w pliku skrypt.js??
bo chodzi oto ze ja przy kazdym zaladowaniu formulaza bede musial dopisywac ten skrypt na koncu. formularze dopisuje za pomoca AJAX'a wiec chcialbym poprostu nawet juz tylko na koncu formularzy wywolac funkcje ktora bylaby zaladowana w head |
|
|
![]()
Post
#4
|
|
![]() Grupa: Zarejestrowani Postów: 45 Pomógł: 0 Dołączył: 5.12.2004 Ostrzeżenie: (0%) ![]() ![]() |
dobrze wszystko ok ale czy moge jakos tak zrobic zeby ten skrypt byl w head albo w pliku skrypt.js?? Oczywiście, możesz to wstawić w head (czyli też w zewnętrznym pliku) albo funkcję przypisaną do zdarzenia onload dać w head a funkcję onchangeCallback zdefiniować w dowolnym miejscu dokumentu (bo to co jest w onload i tak wykona się dopiero po załadowaniu strony więc onchangeCallback będzie już zdefiniowane). |
|
|
![]()
Post
#5
|
|
![]() Grupa: Zarejestrowani Postów: 60 Pomógł: 1 Dołączył: 6.12.2007 Ostrzeżenie: (0%) ![]() ![]() |
nom ok.
![]() ale mam jeszcze jeden problem a co jesli niebedechcial wykonywac na inpucie activ validate np mam 2 inputy i ten skrypt dziala na oba ale ja chcialbym aby na ten grugi niereagowal jak mogbym to rozwiazac |
|
|
![]()
Post
#6
|
|
![]() Grupa: Zarejestrowani Postów: 45 Pomógł: 0 Dołączył: 5.12.2004 Ostrzeżenie: (0%) ![]() ![]() |
Może jakaś walidacja po ID (albo className)?
Kod function onchangeCallback() {
var ids = ['FIRST_NAME', 'LAST_NAME']; for (var i = 0; true; i++) { if (i == ids.length) return; if (ids[i] == this.id) break; } // obsluga elementow o id FIRST_NAME i LAST_NAME } Ten post edytował piechnat 26.12.2007, 17:42:09 |
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 18.07.2025 - 02:40 |