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

Problem z walidacją w JS.

Mały hosting, OGROMNE możliwości
0 głosów
871 wizyt
pytanie zadane 17 lipca 2016 w JavaScript przez Paweł123 Nałogowiec (33,540 p.)

Cześć, mam problem z walidacją w js.

Chodzi o to, że użytkownik musi zaakceptować regulamin i zgodę na przetwarzanie danych. Kiedy zaakceptujemy oba checkboxy to wiadomość zostaje wysłana. Ale kiedy zaakceptujemy oba checkboxy i potem odznaczymy jeden z nich, wiadomość i tak zostanie wysłana. Ktoś wie jak można zrobić, aby walidacja przeszła poprawnie? 

Męczę się z tym już parę godzin :/

<script>
        
 $(document).ready(function() {
 
	 
	 
//Walidacja email
 $('#email').on('blur', function() {
 var input = $(this);
 var email = $(this).val();
 if(email){
 input.removeClass("invalid").addClass("valid");
 }
 else{
 input.removeClass("valid").addClass("invalid");
 }
 });
     
 //Walidacja imienia
 $('#imie').on('blur', function() {
 var input = $(this);
 var imie = $(this).val();
 if(imie){
 input.removeClass("invalid").addClass("valid");
 }
 else{
 input.removeClass("valid").addClass("invalid");
 }
 });
 
	
	 
 //Walidacja nazwiska
 $('#nazwisko').on('blur', function() {
 var input = $(this);
 var nazwisko = $(this).val();
 if(nazwisko){
 input.removeClass("invalid").addClass("valid");
 }
 else{
 input.removeClass("valid").addClass("invalid");
 }
 });

	 
 //Walidacja REGULAMIN	
 $('#checkbox1').on('blur', function() {
 var input = $(this);
 var checkbox1 = $(this).val();
 if(checkbox1){
 input.removeClass("invalid").addClass("valid");
 }
 else{
 input.removeClass("valid").addClass("invalid");
 }
 })
	 
	 
	 
 //Po próbie wysłania formularza
 $('button').click(function(event){
 var imie = $('#imie');
 var nazwisko = $('#nazwisko');
 var email = $('#email');
 
 
 if(imie.hasClass('valid') && nazwisko.hasClass('valid') && email.hasClass('valid')){
 
 }
 else {
 event.preventDefault();
swal({   
	title: "Proszę uzupełnić lub poprawić wszystkie pola podświetlone na czerwono.",  
	confirmButtonColor: "#000",
	confirmButtonText: "OK" });  }
 	});
 
});
</script>
		
<script>
        
 $(document).ready(function() {
 
	 
 //Walidacja REGULAMIN	
 $('#checkbox1').on('blur', function() {
 var input = $(this);
 var checkbox1 = $(this).val();
 if(checkbox1){
 input.removeClass("invalid").addClass("valid");
 }
 else{
 input.removeClass("valid").addClass("invalid");
 }
 })
  
 //Po próbie wysłania formularza
 $('button').click(function(event){
 var checkbox1 = $('#checkbox1');
 
 
 if(checkbox1.hasClass('valid')){
 
 }
 else {
 event.preventDefault();
swal({   
	title: "Proszę zaakceptować regulamin.",  
	confirmButtonColor: "#000",
	confirmButtonText: "OK" });  }
 	});
 
});
	
</script>

<script>
        
 $(document).ready(function() {
 
	 
 //Walidacja DANTCH OSOBOWYCH	
 $('#checkbox2').on('blur', function() {
 var input = $(this);
 var checkbox2 = $(this).val();
 if(checkbox2){
 input.removeClass("invalid").addClass("valid");
 }
 else{
 input.removeClass("valid").addClass("invalid");
 }
 })
  
 //Po próbie wysłania formularza
 $('button').click(function(event){
 var checkbox2 = $('#checkbox2');
 
 
 if(checkbox2.hasClass('valid')){
 
 }
 else {
 event.preventDefault();
swal({   
	title: "Proszę zaakceptować zgodę na przetwarzanie moich danych osobowych.",  
	confirmButtonColor: "#000",
	confirmButtonText: "OK" });  }
 	});
 
});
	
</script>	

 

2 odpowiedzi

+1 głos
odpowiedź 17 lipca 2016 przez Comandeer Guru (607,960 p.)
wybrane 17 lipca 2016 przez Paweł123
 
Najlepsza

Zamiast sprawdzać, czy checkbox ma klasę .valid, sprawdź, czy jest zaznaczony ($( 'checkbox' ).is( ':checked' ) lub $( 'checkbox' )[ 0 ].checked). No i sprawdzaj to przy zdarzeniu change, nie blur (można wysłać formularz BEZ blurowania checkboxa, poprzez Enter!).

komentarz 17 lipca 2016 przez Paweł123 Nałogowiec (33,540 p.)

Nie działa :/ 

Czy tak powinień wyglądać kod? 

<script>
        
 $(document).ready(function() {
 
	 
 //Walidacja REGULAMIN	
 $('#checkbox1').on('change', function() {
 var input = $(this);
 var checkbox1 = $(this).val();
 if(checkbox1){
 $( 'checkbox1' ).is( ':checked' )
 }
 else{

 }
 })
  
 //Po próbie wysłania formularza
 $('button').click(function(event){
 var checkbox1 = $('#checkbox1');
 
 
 if(checkbox1.hasClass(':checked')){
 
 }
 else {
 event.preventDefault();
swal({   
	title: "Proszę zaakceptować regulamin.",  
	confirmButtonColor: "#000",
	confirmButtonText: "OK" });  }
 	});
 
});
	
</script>

 

komentarz 17 lipca 2016 przez Comandeer Guru (607,960 p.)
Masz złe selektory dla checkboxów.
komentarz 17 lipca 2016 przez Paweł123 Nałogowiec (33,540 p.)
Nie rozumiem :/
komentarz 17 lipca 2016 przez Comandeer Guru (607,960 p.)

#checkbox1 vs checkbox1 – widzisz różnicę?

komentarz 17 lipca 2016 przez Paweł123 Nałogowiec (33,540 p.)

Teraz tak, ale nadal nie wiem, jak to zrobić. Coś takiego napisałem, ale coś mi nie wychodzi. 

<script>
        
 $(document).ready(function() {
 
	 
 //Walidacja REGULAMIN	
 $('#checkbox1').change(function(){
 var checkbox1 = .is(':checked');
 if(checkbox1)
 {
 
 }
 else
 {

 }
 })
 //Po próbie wysłania formularza
 $('button').click(function(event){
 var checkbox1 = $('checkbox1');
 if(checkbox1.hasClass(':checked')){
 
 }
 else 
 {
 event.preventDefault();
 swal({   
	title: "Proszę zaakceptować regulamin.",  
	confirmButtonColor: "#000",
	confirmButtonText: "OK" });  }
 	});
 
});
	
</script>

 

komentarz 17 lipca 2016 przez Comandeer Guru (607,960 p.)
Ale po co tak kombinujesz…? Napisałem: "zły selektor". Porównaj mój kod z tym, co masz obecnie
komentarz 17 lipca 2016 przez Paweł123 Nałogowiec (33,540 p.)

Nadal nie działa. Chociaż poprawiłem selektor. 

<script>
         
 $(document).ready(function() {
  
      
 //Walidacja REGULAMIN  
 $('#checkbox1').on('change', function() {
 var input = $(this);
 var checkbox1 = $(this).val();
 if(checkbox1){
 $( 'checkbox1' ).is( ':checked' )
 }
 else{
 
 }
 })
   
 //Po próbie wysłania formularza
 $('button').click(function(event){
 var checkbox1 = $('checkbox1');
  
  
 if(checkbox1.hasClass(':checked')){
  
 }
 else {
 event.preventDefault();
swal({   
    title: "Proszę zaakceptować regulamin.",  
    confirmButtonColor: "#000",
    confirmButtonText: "OK" });  }
    });
  
});
     
</script>

 

komentarz 17 lipca 2016 przez Paweł123 Nałogowiec (33,540 p.)
Ktoś pomoże? Proszę
komentarz 17 lipca 2016 przez Paweł123 Nałogowiec (33,540 p.)

Udało się :) Wszystko działa, ale nie wiem, czy dobrze to zrobiłem.

​
<script>
        
 $(document).ready(function() {
 
	 
 //Walidacja REGULAMIN	
 $('#checkbox1').on('blur', function() {
 var input = $(this);
 var checkbox1 = $(this).is(':checked');
 if(checkbox1){
 input.removeClass("invalid").addClass("valid");
 }
 else{
 input.removeClass("valid").addClass("invalid");
 }
 })
	 
	 
	 
 //Po próbie wysłania formularza
 $('button').click(function(event){
 var checkbox1 = $('#checkbox1');
 
 
 if(checkbox1.hasClass('valid')){
 
 }
 else {
 event.preventDefault();
swal({   
	title: "Proszę zaakceptować regulamin.",  
	confirmButtonColor: "#000",
	confirmButtonText: "OK" });  }
 	});
 
});
	
</script>

<script>
        
 $(document).ready(function() {
 
	 
 //Walidacja DANTCH OSOBOWYCH	
 $('#checkbox2').on('blur', function() {
 var input = $(this);
 var checkbox2 = $(this).is(':checked');
 if(checkbox2){
 input.removeClass("invalid").addClass("valid");
 }
 else{
 input.removeClass("valid").addClass("invalid");
 }
 })
  
 //Po próbie wysłania formularza
 $('button').click(function(event){
 var checkbox2 = $('#checkbox2');
 
 
 if(checkbox2.hasClass('valid')){
 
 }
 else {
 event.preventDefault();
swal({   
	title: "Proszę zaakceptować zgodę na przetwarzanie moich danych osobowych.",  
	confirmButtonColor: "#000",
	confirmButtonText: "OK" });  }
 	});
 
});
	
</script>		
+1 głos
odpowiedź 17 lipca 2016 przez niezalogowany

Jeśli to nie musi być napisane w JSsie, do wymaganych checkboxów można po prostu dodać atrybut required

Podobne pytania

0 głosów
2 odpowiedzi 344 wizyt
pytanie zadane 8 lipca 2016 w JavaScript przez Paweł123 Nałogowiec (33,540 p.)
0 głosów
1 odpowiedź 1,446 wizyt
0 głosów
0 odpowiedzi 198 wizyt
pytanie zadane 19 stycznia 2020 w Offtop przez Mavimix Dyskutant (8,490 p.)

93,717 zapytań

142,629 odpowiedzi

323,261 komentarzy

63,262 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

Twierdza Linux. Bezpieczeństwo dla dociekliwych

Aby uzyskać rabat -10%, użyjcie kodu pasja-linux, wpisując go w specjalne pole w koszyku.

...