Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: walidacja dziala w IE a w FF i operze nie
Forum PHP.pl > Forum > XML, AJAX
cartman_
mam taki formularz (wersja skrócona):
  1. <script type="text/javascript" src = "./../js/WalidacjaDodawaniaKonta.js"></script>
  2. <script type="text/javascript" src = "./../Ajax/advajax.js"></script>
  3.  
  4. <form action="./../js/dodajKonto.php" method="POST" id="Form" name="Form">
  5. <tr>
  6. <td>
  7. <label for="Login">Login*</label>
  8. </td>
  9. <td>
  10. <input type="text" name="Login" size="20" id="Login">
  11. </td>
  12. </tr>
  13. <tr>
  14. <td>
  15. <button onClick="return walidacja()">Rejestruj</button>
  16. </td>
  17. </tr>
  18. </table>
  19. </form>


tu jest plik WalidacjaDodawaniaKonta.js (wersja skrócona):

function $(id) {
return document.getElementById(id);
}

function walidacja() {
var login = $("Login").value;
var zapytanie = "./../js/WalidacjaDodawaniaKonta.php?Login=" + login;
advAJAX.get({
url : zapytanie,
onSuccess : function(obj) {
if(obj.responseText == 'Login') {
alert("Uzytkownik o takim loginie jest juz w bazie danych");
$("Login").style.backgroundColor = 'red';
}
if(obj.responseText == 'OK') {
$("Form").submit();
}
}
});

return true;
}


i plik WalidacjaDodawaniaKonta.php (wersja skrócona):


  1. <?php
  2. <Odczytanie wszystkich loginów z bazy danych>
  3. while (!$rezultat -> EOF)
  4. {
  5. if ($rezultat -> fields[0] == $_GET['Login']) {
  6. echo 'Login';
  7. return;
  8. }
  9.  
  10.  $rezultat -> MoveNext();
  11. }
  12.  
  13. echo 'OK';
  14. ?>



No i wszystko ładnie działa w IE ale w FF i Operze submituje sie niezaleznie od tego czy taki login juz jest w bazie czy nie.. dodatkowo w operze wyskakuje alert "Uzytkownik o takim loginie jest juz w bazie danych" a formularz tak czy owak sie submituje i konto zostaje dodane... Mógłby mi ktoś pomóc?
lordziqqq
W funkcji walidacja() w JS masz na końcu return true czyli niezależnie od tego czy pojawi się alert czy nie funkcja zwraca true i formularz zostanie wysłany
php programmer
Miałem juz taki problem dwa razy,
zauważ że wykorzystujesz funkcję javascript o nazwie
getElementById

tak więc musisz elementom formularza nadać id
(o wartościach takich samych jak mają name)

dlaczego to działa w IE? Bo IE jak nie ma id to bierze name jako id,
natomiast FF i Opera tego nie robią
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.