Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Active Validate JS+AJAX, jak napisac funkcje ktora bedzie zdalnie czekac na zdarzenie elementu
Beynar
post 25.12.2007, 11:43:06
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
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 5)
piechnat
post 25.12.2007, 23:50:43
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);
  }
Go to the top of the page
+Quote Post
Beynar
post 26.12.2007, 12:29:48
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
Go to the top of the page
+Quote Post
piechnat
post 26.12.2007, 13:11:17
Post #4





Grupa: Zarejestrowani
Postów: 45
Pomógł: 0
Dołączył: 5.12.2004

Ostrzeżenie: (0%)
-----


Cytat(Beynar @ 26.12.2007, 12:29:48 ) *
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).
Go to the top of the page
+Quote Post
Beynar
post 26.12.2007, 13:44:41
Post #5





Grupa: Zarejestrowani
Postów: 60
Pomógł: 1
Dołączył: 6.12.2007

Ostrzeżenie: (0%)
-----


nom ok.smile.gif
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
Go to the top of the page
+Quote Post
piechnat
post 26.12.2007, 17:41:28
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
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 18.07.2025 - 02:40