Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [AJAX] validacja formularza
Forum PHP.pl > Forum > Przedszkole
xajart
Witam.

Realizuje pewien projekt z elementami ajaxa. I chciałbym wbudować w formularz sprawdzanie w tle czy dany nick istnieje w bazie danych. 

Mianowicie chodzi o to że mam w formularzu pole input, do którego jak użytkownik wprowadzi nazwe swojego nick, to automatycznie by skrypt w tle sprawdzał w bazie danych czy taki nick już istnieje i obok pola input by pojawiał się obrazek potwierdzający że jest wolny lub zajęty. 

Znalazłem w necie mase skryptów ale wszystkie dotyczna przycisku submit i wywołania funkcji przez onclick, a mi chodzi o to by bez klikania w przycisk, tylko po wypełnieniu pola i przejściu do następnego wiersza (tablulatorem lub wskaźnikiem myszki), aplikacja automatycznie w tle sprawdziła tą wpisana wartość i porównała z wynikami z bazy danych czy nick taki istnieje (czyli występuje w jednym rekordzie) czy może nieistnieje (zwraca 0 rekordów).
nospor
daj dla inputa onblur="alert('ups, wyszedlem z inputa')" winksmiley.jpg

ps: przenosze bo z ajaxem to nie ma nic wspolnego
230005
Do inputa przypisujesz onchange = "jakas_funkcja()", a resztę skryptu tak samo jak w tych gotowcach, co znalazłeś smile.gif .
xajart
Okej dzięki juz wiem jak to zrobić, udało mi się to wykonać za pomocą biblioteki mintAjax. 


Ale nie mogę wyczaić jak to samo zrobić przy pomocy JQuery sad.gif
kajzur
Wydaje mi się że mintAjax jest wydajniejszą biblioteką ;> niż ten wieeelki JQuery smile.gif
xajart
Nie mogę ogarnąć JQuery

MintAjax mam zrobione tak:

Kod
<script src="mintAjax.js" type="text/javascript"&gt;&lt;/script>;
<script>
function spr() {
var req = mint.Request();
req.method="post";
req.AddParam("input", $("name").value);
req.Send("sprawdz.php", "wynik");
}
</script>
</head><body>
<input id="name" type="text" onchange="spr()" />
<div id="wynik"></div>
</body></html>


Plik sprawdz.php
Kod
echo $_POST['input'];


A teraz chciałbym to samo zrobić w JQuery, czy może mi ktoś pomóc, bo wszystkie próby jakich się podjełem skończyły się fiaskiem sad.gif A niestety panel z formularzem mam zbudowany na JQuery i wewnątrz mintAjaxa niezastosuje bo wyświetla mi wartość undefined rozumie że się jakoś biblioteki gryzą.
kamil4u
OT:
Cytat
Wydaje mi się że mintAjax jest wydajniejszą biblioteką ;> niż ten wieeelki JQuery smile.gif

To nie zależy od wydawania się, a od napisania kodu - musiałbyś zrobić odpowiednie testy - chyba, że takie zrobiłeś(wtedy pokaż nam wyniki - jak możesz) - najwydajniejsze są skrypty 'własne' głównie dlatego, że 'karzesz' robić przeglądarce tylko to co jest niezbędne smile.gif

Pozdrawiam
xajart
naskrobałem coś takiego

Kod
function spr() {

    $('input[type="text"]#name.').blur(function(){
 var a = this.value;
   
     alert(a);
                                       });

};


ale nie wiem czemu wyświetla się komunika dopiero jak drugi raz tabulatorem przejde przez to pole. 
I puki co nie wiem jak to przekazać do plku php, z tego co gdzieś czytałem to mniejwięcej jest jakos tak:
Kod
$.post('email.php', {name: .... })



tylko że w miejscu kropek nie wiem co mam wstawić bo jak dam this.value to niedziała.
nithajasz
  1. $("input[name='nick']").blur(function(){
  2. $.post('test_nick.php', {nick: $(this).val()}, function(data){
  3. $('#test').html(data['result']);
  4. }, "json");
  5. });


To tak najprościej jak się da.. winksmiley.jpg
xajart
Od rana siedziałem nad dokumentacja JQuery, bardzo przydatna dokumetnacja, teraz to rozbuduje na swoje potrzeby, ale może komuś się przyda smile.gif 

Moje rozwiązanie:



Kod
...

<script src="http://code.jquery.com/jquery-latest.js"></script>
 
  <script>
 $(document).ready(function(){
     $("input[type='text']#name").change( function() {
         var str = $(this).val();

         $.ajax({
                type: "POST",
                url:  "sprawdz.php",
                data: { name: str },
                // msg zawiera wartość zwróconą przez skrypt php,
                // w przypadku poprawnego zakończenia działania
                beforeSend: function (XMLHttpRequest) {
                        $("div#content").html("Trwa sprawdzanie loginu.");
                },
                success: function(msg) {
                    // zapiszmy wynik działania skryptu na stronie html w div o id=”content”
                    $("div#content").html(msg);
                 },
                 error: function (XMLHttpRequest, textStatus, errorThrown) {
                     $("div#content").html('Przepraszamy, wiadomość nie mogła zostać wysłana.');
                 }
         });
     });
 });
  </script>
  <style>
  div { color:red; }
  </style>
</head>
<body>
<input type="text" id="name" />
<input type="text" id="name2" />
 
  <div id="content"></div>
</body>
</html>


plik sprawdz.php

Kod
echo $_POST["name"];




temat można zamknąć smile.gif
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.