• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Zatrzymanie wysyłania formularza

Object Storage Arubacloud
+4 głosów
1,236 wizyt
pytanie zadane 8 kwietnia 2015 w JavaScript przez LislaV Bywalec (2,400 p.)

Cześć, mam skrypt Javascript, który sprawdza poprawność wpisanych danych do formularza. Chcę zrobić tak, że formularz wyśle się, gdy wszystke funkcje sprawdzające pola zwrócą true. Jeżeli choć jedna funkcja zwróci fałsz, formularz ma się nie wysyłac. Mój kod wygląda tak (wrzuce tylko potrzebne rzeczy, bez zbędnych funkcji):

 

window.onload = Init;

function Init()
{
	var login = document.getElementById('login');
	login.onblur = function() {
		checkLogin(this);
	}
	var password = document.getElementById('password');
	password.onblur = function(){
		checkPassword(this);
	}
	var password2 = document.getElementById('password_potw');
	password2.onblur = function(){
		checkPassword2(this);
	}
	var email = document.getElementById('email');
	email.onblur = function(){
		checkEmail(this);
	}
	document.forms["rejestracja"].onsubmit = function(){
		onSubmit(this);
	}
}

i funkcja onSubmit() 
 

function onSubmit(form){
	if (!checkLogin(form.login) ||
		!checkPassword(form.password) ||
		!checkPassword2(form.password_potw) ||
		!checkEmail(form.email))
	{
			return false;
	} 	
	else return true;
}

To powinno działać tak, że jeżeli ta funkcja onSubmit() zwróci false, to formularz się nie wyśle, prawda? A u mnie formularz wysyła się mimo to. 

4 odpowiedzi

0 głosów
odpowiedź 8 kwietnia 2015 przez SyntaxError Pasjonat (17,170 p.)
edycja 8 kwietnia 2015 przez SyntaxError

onsubmit to jest zdarzenie chyba wywoływane przy wysyłaniu. Nie jestem pewien, ale tak mi się wydaje. A wywołanie wysłania formularza to jest po prostu

document.forms["rejestracja"].submit();

na formularzu. Czyli musiałbyć wywołać te funkcję tylko jeśli wszystkie flagi przejdą.

0 głosów
odpowiedź 8 kwietnia 2015 przez toaspzoo Dyskutant (8,300 p.)

jquery: event.preventDefault();

http://api.jquery.com/event.preventdefault/

0 głosów
odpowiedź 8 kwietnia 2015 przez nefil1m Stary wyjadacz (10,690 p.)
Możesz też zablokować button dopóki formularz nie jest wypełniony poprawnie.

Prawdziwe sprawdzanie poprawności powinno być podobno po stronie serwera bo to co masz po stronie klienta jest łatwo obejść. Np wspomiane przeze mnie rozwiązanie.
komentarz 8 kwietnia 2015 przez SyntaxError Pasjonat (17,170 p.)
Dokładnie. Każdy sobie może stworzyć taki sam formularz do Twojego skryptu i wysłać jakieś śmieci.
komentarz 8 kwietnia 2015 przez GrzesiekB Gaduła (3,720 p.)
Sprawdzenie za pomocą JS ma sens, bo zanim wyślesz już możesz wskazać co jest nie tak z danymi. Validacja danych otrzymanych musi być bezwzględnie (w PHP w skrypcie odbierającym).
0 głosów
odpowiedź 8 kwietnia 2015 przez Wirus Stary wyjadacz (14,000 p.)

zamiast onsubmit() spróbuj onclick(). Jeżeli to się nie uda. Sprawdzaj pola tekstowe jak tu:

 Login.onchange = function(){

if(lLogin.value.length > 6)

jest ok, tutaj obsługa tego ifa. Np: zwraca +1 do zalogowania się.

}

 

Podobne pytania

0 głosów
1 odpowiedź 1,184 wizyt
pytanie zadane 27 czerwca 2015 w JavaScript przez niezalogowany
0 głosów
1 odpowiedź 500 wizyt
pytanie zadane 24 września 2019 w HTML i CSS przez Bartpianista Nowicjusz (140 p.)
0 głosów
1 odpowiedź 145 wizyt

92,539 zapytań

141,382 odpowiedzi

319,476 komentarzy

61,928 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...