Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Sprawdzanie pola w formularzu
Forum PHP.pl > Forum > Po stronie przeglądarki
Darkhijacker
Zrobiłem formularz:

  1. <head>
  2. </head>
  3. <body style="background-color:#656565;" onload="fokus('tytul');">
  4.  
  5. <script language="javascript" type="text/javascript">
  6.  
  7. function insert_form(tytul, rozdzielczosc, gatunek, producent, link, screen, opis)
  8. {
  9. opener.document.forms['post'].message.value += "[tytul]" + tytul + "[/tytul]\n\n[rozdzielczosc]" + rozdzielczosc + "[/rozdzielczosc]\n[gatunek]" + gatunek + "[/gatunek]\n[producent]" + producent + "[/producent]\n\n[link]" + link + "[/link]\n\n[screen]" + screen + "[/screen]\n\n[opis]" + opis + "[/opis]";
  10. opener.focus();
  11. window.close();
  12. }
  13.  
  14. function validateForm(f){
  15. var i,e=f.elements,puste=false
  16. var pola=['tytul']
  17. for(i=pola.length-1; i>=0; --i)
  18. if(e[pola[i]].value!='') e[pola[i]].style.border='1px solid #7B9EBD'
  19. else{
  20. puste=true
  21. e[pola[i]].style.border='1px solid #ff9900'
  22. }
  23. if(puste) alert('Musisz wypełnić wszystkie pola')
  24. return !puste}
  25.  
  26. </script>
  27. <table border="1" width="90%" style="background-image: url(backs.gif); background-repeat: repeat-x; background-color:#efefef;"><tr style="background-color:#efefef;"><td style="background-color:#efefef;">
  28. <b><fieldset><legend align="center" style="font-weight: bold; font-size: 18px; font-family: 'Trebuchet MS',Verdana, Arial, Helvetica, sans-serif; text-decoration: none; line-height : 120%; color : #040404;">Formularz wstawiania gry:</b></legend>
  29.  
  30. <form name="formularz" id="formularz" enctype="multipart/form-data" action="http://domena.com/index.php" onsubmit="return validateForm(this)">
  31.  
  32. <p>Tytuł gry<span style="color:red;"> *</span> : <span class="postrow"><input type="text" name="tytul" size="20" style="vertical-align:middle;"></span>
  33. </p>
  34. <p>Rozdzielczość : <span class="postrow"><select name="rozdzielczosc" size="1" style="vertical-align:middle;">
  35. <option>128x128</option>
  36. <option>130x130</option>
  37. <option>128x160</option>
  38. <option>132x176</option>
  39. <option>176x208</option>
  40. <option>176x220</option>
  41. <option>240x320</option>
  42. <option>352x416</option>
  43. </select></span></p>
  44. <p>Gatunek gry : <span class="postrow"><select name="gatunek" size="1" style="vertical-align:middle;">
  45. <option>Zręcznościowa</option>
  46. <option>Strategiczna</option>
  47. <option>RPG</option>
  48. <option>Logiczna</option>
  49. <option>Sportowa</option>
  50. <option>Bijatyka</option>
  51. <option>Erotyczna</option>
  52. <option>Platformowa</option>
  53. <option>Wyścigi</option>
  54. <option>Przygodowa</option>
  55. </select></span></p>
  56. <p>Producent : <span class="postrow"><input type="text" name="producent" size="20" style="vertical-align:middle;">
  57. </p>
  58. <span class="postrow"><p>Link do pliku jar<span style="color:red;"> *</span> : <input type="text" name="link" size="20" style="vertical-align:middle;"></span>&nbsp;&nbsp;<button class="buttonik" type="button" onClick="window.open('http://domena.com','mywindow','width=0,height=0')" name="uploader" style="vertical-align:middle;">Uploader</button>
  59. </p>
  60. <p>Link do screenu z gry : <span class="postrow"><input type="text" name="screen" size="20" style="vertical-align:middle;">
  61. </p>
  62. Skrótowy opis gry :
  63. <textarea name="opis" cols="56" rows="3"></textarea>
  64.  
  65.  
  66. <button type="submit" class="buttonik" value="Wstaw" onClick="return validateForm(f);" onClick="insert_form(this.form.tytul.value, this.form.rozdzielczosc.value, this.form.gatunek.value, this.form.producent.value, this.form.link.value, this.form.screen.value, this.form.opis.value); return false;">Wstaw grę</button>
  67. <button type="reset" class="buttonik" value="Wyczyść">Wyczyść</button>
  68.  
  69. </td></tr>
  70. </form>
  71. </body>
  72. </html>


Przy naciśnięciu buttona "Wstaw grę" skrypt sprawdza czy pole "tytul" jest puste. Jeśli jest puste wyskuje powiadomienie "Musisz wypełnić wszystkie pola", po wypełnieniu jego, klikam ponownie we "Wstaw grę", tym razem już powiadomienie nie wyskakuje, ale button nie chce działać, czyli przenosi mnie na stronę błędu. Zdaje mi się, że onClick="return validateForm(f);" "gryzie" się z onClick="insert_form(this.form.tytul.value, ........ this.form.opis.value); return false;"
Ponieważ, gdy usune onClick="return validateForm(f);" wszystko działa dobrze.
Co o tym sądzicie??
l0ud
Co rozumiesz pod "przenosi mnie na stronę błędu"?
Darkhijacker
Kod
form name="formularz" id="formularz" enctype="multipart/form-data"  action="http://domena.com/index.php" onsubmit="return  validateForm(this)">


Jeśli jest jakiś błąd przenosi mnie tutaj http://domena.com/index.php
wlamywacz
Zainstaluj konsole błędów w FF i zobacz jaki błąd Ci pokazuje, lub poszukaj standardowo wbudowanej w Opere
Darkhijacker
Po wypełnieniu obowiązkowego pola gdy nacisne "Wstaw grę" konsola pokazuje takie błąd:
Kod
Ostrzeżenie: Formularz zawiera poprawną deklarację typu kodowania: enctype=multipart/form-data, jednakże nie zawiera method=POST, dlatego zostanie przesłany z użyciem metody method=GET, a zmienna enctype zostanie pominięta.
Plik źródłowy: http://freejavagames.co.cc/formularz.html
Wiersz: 0


Ale z tym już sobie poradziłem i dalej nie działa :/ Jeszcze zostały tylko dwa błędy:
Kod
Błąd: fokus is not defined
Plik źródłowy: http://freejavagames.co.cc/formularz.html
Wiersz: 1

Kod
Błąd: f is not defined
Plik źródłowy: http://freejavagames.co.cc/formularz.html
Wiersz: 1
wlamywacz
I gotowe tongue.gif Nie zapomnij o przycisku pomógł ;p

  1. var fokus;
  2. var f;
Darkhijacker
Nie ma tak łatwo tongue.gif Jak dodałem to co mówiłeś w znaczniku "script" to teraz pokazuje się:
Kod
Błąd: f is undefined
Plik źródłowy: http://freejavagames.co.cc/formularz.html
Wiersz: 16
Shili
Powiedz mi co Ty tą funkcją onload chcesz zrobić? Ustawić kursor na polu name? Bo na razie wywołujesz funkcję fokus, której wcale nie ma. To na pierwszym marginesie.

Na drugim: Element nie może mieć dwóch tych samych atrybutów - innymi słowy submit ma dwa razy onclick - usuń to, rozdzielając wywołania funkcji średnikiem.

Na trzecim:
onClick="return validateForm(f);" zamień na return validateForm(this);
wlamywacz
Masz funkcję:
  1. validateForm(f)


To f to masz tam podać zmienną podczas wywołania funkcji a nie jak Ty to robisz:
  1. onClick="return validateForm(f);"


Podaj tam form-e
Darkhijacker
Kurde ciągle coś nie działa sadsmiley02.gif Byłby ktoś tak dobry i wkleił mi tutaj prawidłową wersje??
wlamywacz
Ludzie trochę własnej inwencji !

To chyba tak ma być
  1. onClick="return validateForm(this.form);"
Darkhijacker
Coś takiego mam:
Kod
<html>
<head>
</head>
<body background="http://freejavagames.co.cc/templates/AbayBlue/images/back.gif">

<script language="javascript" type="text/javascript">

function insert_form(tytul, rozdzielczosc, gatunek, producent, link, screen, opis)
{
    opener.document.forms['post'].message.value += "[tytul]" + tytul + "[/tytul]\n\n[rozdzielczosc]" + rozdzielczosc + "[/rozdzielczosc]\n[gatunek]" + gatunek + "[/gatunek]\n[producent]" + producent + "[/producent]\n\n[link]" + link + "[/link]\n\n[screen]" + screen + "[/screen]\n\n[opis]" + opis + "[/opis]";
    opener.focus();
    window.close();
}

function validateForm(f){
var i,e=f.elements,puste=false
var pola=['tytul']
for(i=pola.length-1; i>=0; --i)
    if(e[pola[i]].value!='') e[pola[i]].style.border='1px solid #7B9EBD'
    else{
        puste=true
        e[pola[i]].style.border='1px solid #ff9900'
    }
if(puste) alert('Musisz wypełnić wszystkie pola')
return !puste}

</script>
<table border="1" width="90%" style="background-image: url(backs.gif); background-repeat: repeat-x; background-color:#efefef;"><tr style="background-color:#efefef;"><td style="background-color:#efefef;">
<table align="center" width="500" height="32">
<tr>
    <td background="http://freejavagames.co.cc/templates/AbayBlue/images/cellpic2.gif"><center><font color="white" size="4" face="'Trebuchet MS',Verdana, Arial, Helvetica, sans-serif"><b>Formularz wstawiania gry:</b></font></center></td>
</tr>
</table>
<b><fieldset><legend align="center" style="font-weight: bold; font-size: 18px; font-family: 'Trebuchet MS',Verdana, Arial, Helvetica, sans-serif; text-decoration: none; line-height : 140%; color : #040404;"></b></legend>

<form name="formularz" id="formularz" enctype="multipart/form-data" method="POST" action="http://freejavagames.co.cc/index.php" onsubmit="return validateForm(this)">

<p>Tytuł gry<span style="color:red;"> *</span> :  <span class="postrow"><input type="text" name="tytul" size="20" style="vertical-align:middle;"></span>
</p>
<p>Rozdzielczość : <span class="postrow"><select name="rozdzielczosc" size="1" style="vertical-align:middle;">
  <option>128x128</option>
  <option>130x130</option>
  <option>128x160</option>
  <option>132x176</option>
  <option>176x208</option>
  <option>176x220</option>
  <option>240x320</option>
  <option>352x416</option>
</select></span></p>
<p>Gatunek gry : <span class="postrow"><select name="gatunek" size="1" style="vertical-align:middle;">
  <option>Zręcznościowa</option>
  <option>Strategiczna</option>
  <option>RPG</option>
  <option>Logiczna</option>
  <option>Sportowa</option>
  <option>Bijatyka</option>
  <option>Erotyczna</option>
  <option>Platformowa</option>
  <option>Wyścigi</option>
  <option>Przygodowa</option>
</select></span></p>
<p>Producent : <span class="postrow"><input type="text" name="producent" size="20" style="vertical-align:middle;">
</p>
<span class="postrow"><p>Link do pliku jar<span style="color:red;"> *</span> : <input type="text" name="link" size="20" style="vertical-align:middle;"></span>&nbsp;&nbsp;<button class="buttonik" type="button" onClick="window.open('http://fjgupload.co.cc/','mywindow','width=0,height=0')" name="uploader" style="vertical-align:middle;">Uploader</button>
</p>
<p>Link do screenu z gry : <span class="postrow"><input type="text" name="screen" size="20" style="vertical-align:middle;">
</p>
Skrótowy opis gry : <br><textarea name="opis" cols="56" rows="3"></textarea>
<br>
<input type="submit" class="buttonik" value="Wstaw grę" onClick="return validateForm(this.form); insert_form(this.form.tytul.value, this.form.rozdzielczosc.value, this.form.gatunek.value, this.form.producent.value, this.form.link.value, this.form.screen.value, this.form.opis.value); return false;" />
<button type="reset" class="buttonik" value="Wyczyść">Wyczyść</button>

</td></tr>
</form>
</body>
</html>


Nadal nie działa. Już żaden pomysł nie przychodzi mi do głowy żeby jak to naprawić.
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.