-
11. Data: 2009-01-23 08:17:42
Temat: Re: Sprawdzanie poprawności formularzy
Od: Maciej Łebkowski <m...@e...com>
Dnia 22-01-2009 o 22:30:29 Mirosław Zalewski <miniopl@cut_this.gmail.com> napisał(a):
> Tylko, jeżeli się nie mylę, nie masz racji co do konsekwencji --
> wywołanie alert() nie wpływa na zatrzymanie wysyłania formularza. W
> przypadku gdy formularz będzie wypełniony poprawnie a przeglądarka nie
> będzie obsługiwała modelu DOM, po kliknięciu <input type="submit">
> pojawi się puste okienko. Po kliknięciu ,,ok" nastąpi normalne wysyłanie
> formularza.
AFAIR puste okienka alert się nie świecą... Correct me if im wrong.
--
Maciej Łebkowski
-
12. Data: 2009-01-23 21:35:41
Temat: Re: Sprawdzanie poprawności formularzy
Od: Mirosław Zalewski <miniopl@CUT_THIS.gmail.com>
styczeń roku pamiętnego 2009, prawdopodobnie 23. Wielka mądrość na
czytelników pl.comp.www spłynęła, gdy tako rzekł(a) Maciej Łebkowski:
> AFAIR puste okienka alert się nie świecą... Correct me if im wrong.
Empirycznie nie potwierdzam. Zmienna jest wcześniej inicjowana i
deklarowana jako pusta (var errorstring = ''), a w takim przypadku
zarówno Opera jak i Firefox pokazują puste okienko. Na tej podstawie
wierzę, że inne przeglądarki zachowają się podobnie.
Jeżeli chodzi o wywołanie alert() bez żadnych argumentów, O wyświetli
takie okienko a Fx nie. Więc, jak widać, reguły niestety nie ma.
--
Niżej podpisany, zamieszkały w http://minio.xt.pl ,
Mirosław Zalewski
-
13. Data: 2009-01-23 22:32:59
Temat: Re: Sprawdzanie poprawności formularzy
Od: "Gabriel" <z...@p...fm>
Użytkownik "Mirosław Zalewski" <miniopl@CUT_THIS.gmail.com> napisał w
wiadomości news:20090123223541.32bf8ba0@pingwin.place.you.dont.
want.to.be...
A to przerobiony nieco kod PPK (z uwzglednieniem tej naszej dyskusji):
var W3CDOM = (document.getElementsByTagName && document.createElement);
function validate() {
validForm = true;
firstError = null;
errorstring = '';
var x = document.forms[0].elements;
for (var i=0;i<x.length;i++) {
if
((!x[i].value)&&(x[i].nodeName.toUpperCase()!="FIELD
SET")&&(x[i].type.toUppe
rCase()!="HIDDEN")&&(x[i].type.toUpperCase()!="SUBMI
T"))
writeError(x[i],'To pole jest wymagane');
}
if (x['email'].value.indexOf('@') == -1)
{
writeError(x['email'],'Podaj poprawny adres email');
return false;
}
if (!W3CDOM)
{
return true;
}
if (firstError)
{
firstError.focus();
}
if (validForm)
{
return true;
}
return validForm;
}
function writeError(obj,message) {
validForm = false;
if (obj.hasError) return;
if (W3CDOM) {
obj.className += ' error';
obj.onchange = removeError;
var sp = document.createElement('span');
sp.className = 'error';
sp.appendChild(document.createTextNode(message));
obj.parentNode.appendChild(sp);
obj.hasError = sp;
}
else {
errorstring += obj.name + ': ' + message + '\n';
obj.hasError = true;
}
if (!firstError)
firstError = obj;
}
function removeError()
{
this.className = this.className.substring(0,this.className.lastIndexO
f('
'));
this.parentNode.removeChild(this.hasError);
this.hasError = null;
this.onchange = null;
}
Wywolywany jest w formularzu poprzez onsubmit="return validate();"
Gdyby ktos mial jakies uwagi, to smialo:)
--
Pozdrawiam
Gabriel Zastawnik
http://www.sigsoft.pl - Monitoring Komputera
-
14. Data: 2009-01-24 09:48:11
Temat: Re: Sprawdzanie poprawności formularzy
Od: "Gabriel" <z...@p...fm>
Użytkownik "Gabriel" <z...@p...fm> napisał w wiadomości
news:gldgko$arj$1@atlantis.news.neostrada.pl...
Mala poprawka, zeby bylo bardziej uniwersalnie - wywolanie funkcji poprzez
validate(nazwa_formularza);
var W3CDOM = (document.getElementsByTagName && document.createElement);
function validate(formName) {
validForm = true;
firstError = null;
errorstring = '';
var x = document.forms[formName].elements;
for (var i=0;i<x.length;i++) {
if
((!x[i].value)&&(x[i].nodeName.toUpperCase()!="FIELD
SET")&&(x[i].type.toUppe
rCase()!="HIDDEN")&&(x[i].type.toUpperCase()!="SUBMI
T"))
writeError(x[i],'To pole jest wymagane');
}
if (x['email'].value.indexOf('@') == -1)
{
writeError(x['email'],'Podaj poprawny adres email');
return false;
}
if (!W3CDOM)
{
return true;
}
if (firstError)
{
firstError.focus();
}
if (validForm)
{
return true;
}
return validForm;
}
function writeError(obj,message) {
validForm = false;
if (obj.hasError) return;
if (W3CDOM) {
obj.className += ' error';
obj.onchange = removeError;
var sp = document.createElement('span');
sp.className = 'error';
sp.appendChild(document.createTextNode(message));
obj.parentNode.appendChild(sp);
obj.hasError = sp;
}
else {
errorstring += obj.name + ': ' + message + '\n';
obj.hasError = true;
}
if (!firstError)
firstError = obj;
}
function removeError()
{
this.className = this.className.substring(0,this.className.lastIndexO
f('
'));
this.parentNode.removeChild(this.hasError);
this.hasError = null;
this.onchange = null;
}
--
Pozdrawiam
Gabriel Zastawnik
http://www.sigsoft.pl - Monitoring Komputera
-
15. Data: 2009-01-24 09:58:48
Temat: Re: Sprawdzanie poprawności formularzy
Od: Paweł Piskorz <n...@p...nie?>
Gabriel pisze:
> Moj kod formularza:
> <form action="send.php" method="post" id="formularz_pytania_uwagi"
> onsubmit="return validate();">
> <fieldset>
[8<]
> <input name="przycisk" type="submit" value="wyślij" class="przycisk" />
> </fieldset>
> </form>
>
> Czyli - najprostszy z mozliwych.
>
> Kod umieszczony na w/w stronie sprawdza kolejne elementy danego formularza
> poczawszy od i=0 do liczby elementow zawartych w formularzu:
> for (var i=0;i<x.length;i++) {
> if (!x[i].value)
> writeError(x[i],'This field is required');
> }
>
[8<]
> No i po co sprawdzac element ostatni, czyli przycisk "wyslij" ?
A czemu nie? I tak ma on zawsze value, więc po co się męczyć z
wykluczeniem go?
--
message[autor="PablO"]::after {
content:"Pozdrawiam";
}
-
16. Data: 2009-01-24 10:07:06
Temat: Re: Sprawdzanie poprawności formularzy
Od: "Gabriel" <z...@p...fm>
Użytkownik "Paweł Piskorz" <n...@p...nie?> napisał w wiadomości
news:gleooo$2ps$1@inews.gazeta.pl...
> A czemu nie? I tak ma on zawsze value, więc po co się męczyć z
> wykluczeniem go?
No po to, ze IMO skoro skrypt ma sluzyc poprawnosci wpisania danych przez
uzytkownika, to po co ma sprawdzac dane niewpisywane przez uzytkownika:)
Post wyzej juz zreszta poradzilem sobie z tym odpowiednio modyfikujac skrypt
PPK.
--
Pozdrawiam
Gabriel Zastawnik
http://www.sigsoft.pl - Monitoring Komputera
-
17. Data: 2009-01-24 11:44:17
Temat: [OT] Re: Sprawdzanie poprawności formularzy
Od: ethanak <s...@b...pl>
Dnia Sat, 24 Jan 2009 11:07:06 +0100, Gabriel napisał(a):
> No po to, ze IMO skoro skrypt ma sluzyc poprawnosci wpisania danych
> przez uzytkownika, to po co ma sprawdzac dane niewpisywane przez
> uzytkownika:)
Ja tak się przyglądam dyspucie i zastanawiam... która to z dzisiejszych
przeglądarek nie obsługuje DOM2?[1]
Poza tym... nie prościej sprawdzać czy pole jest typu "text" niż czy pole
nie jest typu [lista typów]?
Ja rozumiem że to dysputa czysto teoretyczna i nikt przy zdrowych
zmysłach nie będzie tego w rzeczywistym świecie stosować :)
ethanak
[1] Ja wiem.
--
mailto=window.atob('ZXRoYW5ha0Bwb2xpcC5jb20=');
http://milena.polip.com/ - nie czekam na Ivo!
-
18. Data: 2009-01-24 11:59:38
Temat: Re: Sprawdzanie poprawności formularzy
Od: "Radek N." <n...@g...pl>
Gabriel pisze:
> Witam serdecznie
>
> Do tej pory korzystalem z wlasnych skryptow weryfikujacych poprawnosc
> wypelnianego formularza po stronie uzytkownika. Pozniej przepuszczalem
> wyslana tresc przez swoje skrypty napisane w php po stronie serwera.
>
> Ale jako, ze na pewno nie sa to doskonale rozwiazania, a pisalem je kilka
> lat temu, szukam jakiegos gotowca ktory przystawal by do dzisiejszych
> wymogow.
>
> Formularz prosty - ot imie i nazwisko, email i tresc wiadomosci.
>
> Znacie cos co mozecie polecic do wykorzystania? Bo wywazac otwartych drzwi
> nie zamierzam:)
>
> Chodzi mi przede wszystkim o rozwiazania.. takie najbardziej przyjazne
> uzytkownikowi. I dbajace takze o osoby niepelnosprawne.
A ja tak się zbieram od jakiegoś czasu (no tak z 4 lata się zbieram),
żeby sobie zrobić jakiś taki wzorcowy proces walidacji.
W głowie mam takie założenia:
- walidacja po stronie serwera (PHP) i po stronie klienta (JS)
- wspólny dla PHP i JS plik XML (może inny format) z definicją walidacji
- wspólny dla PHP i JS plik z komunikatami o błędach
Cel jest taki, żebym w jednym miejscu określał jak ma być walidowany
formularz i w ogóle się nie zastanawiał nad różnicami client/server side.
I jedyne, co chcę robić, to po stronie PHP wpisać (ala ZF):
$form->addElement('text', 'username', array(
'label' => $translate->_('Enter name'),
'required' => true,
'filters' => array('StringTrim'),
'validators' => array(
'Alpha',
array('StringLength', array(3, 20)),
)
));
A w wyniku miałbym już formularz z pełną obsługą spójnej walidacji po
stronie serwera i klienta.
No to koniec koncertu życzeń... może kiedyś przysiądę i to zrobię :)
ps. Nie nie myślałem jeszcze nad tym czy wszystkie założenia da się
spełnić :) Ot tak sobie dumam.
--
Radek N.
-
19. Data: 2009-01-24 12:18:14
Temat: Re: Sprawdzanie poprawności formularzy
Od: ethanak <s...@b...pl>
Dnia Sat, 24 Jan 2009 12:59:38 +0100, Radek N. napisał(a):
> [...]
> Cel jest taki, żebym w jednym miejscu określał jak ma być walidowany
> formularz i w ogóle się nie zastanawiał nad różnicami client/server
> side.
A wiesz że nad czymś podobnym siedzimy we firmie (oparcie o
CodeIgnitera). Jak coś mądrego się wykluje co będę mógł udostępnić to się
podzielę :)
ethanak
--
mailto=window.atob('ZXRoYW5ha0Bwb2xpcC5jb20=');
http://milena.polip.com/ - nie czekam na Ivo!
-
20. Data: 2009-01-24 12:28:25
Temat: Re: Sprawdzanie poprawności formularzy
Od: "Radek N." <n...@g...pl>
ethanak pisze:
> Dnia Sat, 24 Jan 2009 12:59:38 +0100, Radek N. napisał(a):
>
>> [...]
>> Cel jest taki, żebym w jednym miejscu określał jak ma być walidowany
>> formularz i w ogóle się nie zastanawiał nad różnicami client/server
>> side.
>
> A wiesz że nad czymś podobnym siedzimy we firmie (oparcie o
> CodeIgnitera). Jak coś mądrego się wykluje co będę mógł udostępnić to się
> podzielę :)
Myślisz, że ja chcę, żeby to ktoś za mnie zrobił :P
Jak tylko uda mi się sen ograniczyć do 3h na dobę, to znajdę czas.
U mnie w firmie framework (server side) był budowany z tą myślą i jest
gotowy właściwie na takie rozwiązanie. Brakuje JSa, ale jakoś ciągle się
to odkłada.
No ale ja chcę sobie do domku w oparciu o mój mini framework PHP zrobić
i jeszcze dodatkowo do Zend Framework dopisać jakiegoś plugina walidacji.
Pomysł właściwie narodził się dawno temu, gdy ludzie od QA ciągle
zgłaszali bugi:
- brak walidacji po stronie klienta
- jak już ktoś podłączył walidację po stronie klienta, to pamiętał o
updatowaniu komunikatów po stronie JS (bo łatwo je wychwycić), ale po
stronie serwera już nie zmienił treści i były różne teksty w zależności
od technologii
- ciągłe problemy z komunikatami przy wersjach językowych
- różnice w działaniu walidatora JS i server side
- ...
No ale chętnie się przyglądnę jakiejś podobnej realizacji :)
--
Radek N.