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

JS walidacja checbox

Object Storage Arubacloud
0 głosów
298 wizyt
pytanie zadane 3 lipca 2019 w JavaScript przez michal_php Stary wyjadacz (13,700 p.)

Cześć.

Robię walidację checkbox opartą na js.Mam jednak mały problem ponieważ kod nie działa zbyt dobrze.Otóż po zaznaczeniu pierwszego chcekboxa pokazuje mi zero zaznaczonych a drugiego już nie mogę w ogóle zaznaczyć w sensie klika na niego ale nie odfajkowuje się.Walidacja ma polegać , że po zaznaczeniu 4 losowych checkbox ma pokazać komunikat i wyłączyć możliwość dodawani w innych.Mój kod :

function validation() {
    document.querySelector('#formTest').addEventListener('click', function(e) {
        e.preventDefault();
        var checkedCount = 0;
        for(var i=0; i<9; i++){
            var checkboxes = document.querySelectorAll('input[name="pole'+i+'"]');
        }
        for (const chk of checkboxes) {
            if (chk.checked) {
                checkedCount++;
            }
        }
        if (checkedCount < 2) {
            alert('Wybrałeś ' +checkedCount+' owoce, a musisz wybrać minimum 2');
        } else {
            alert('Wybrałeś ' +checkedCount+' owoce. Bądź pozdrowiony!');
        }
    });
}

i kod html z checkboxem :

<form id="validation()">
<div class="col-md-6">
            <label><input type="checkbox" name="pole1" onchange="validation()" value="1"> 1</label><br>
            <label><input type="checkbox" name="pole2" onchange="validation()" value="2"> 2</label><br>
            <label><input type="checkbox" name="pole3" onchange="validation()" value="3"> 3</label><br>
            <label><input type="checkbox" name="pole4" onchange="validation()" value="4"> 4</label><br>
            <label><input type="checkbox" name="pole5" onchange="validation()" value="5"> 5</label><br>
        </div>
        <div class="col-md-6">
            <label><input type="checkbox" name="pole6" onchange="poleSix()" value="6"> 6</label><br>
            <label><input type="checkbox" name="pole7" onchange="validation()" value="7"> 7</label><br>
            <label><input type="checkbox" name="pole8" onchange="validation()" value="8>  8</label><br>
            <label><input type="checkbox" name="pole9" onchange="validation()" value="9"> 9</label><br>
        </div>
    </div>
</form>

 

1 odpowiedź

0 głosów
odpowiedź 3 lipca 2019 przez michal_php Stary wyjadacz (13,700 p.)

Znalazłem błąd i wiem dla czego nie zliczało mi ile jest zaznaczonych.Mam tylko kłopot bo nie wiem  jak teraz tą liczbę nie zaznaczonych zamienić aby była wyłączona : 

function validation() {
        var checkedCount = 0;
        for(var i=0; i<10; i++){
            var checkboxes = document.querySelectorAll('input[name="pole'+i+'"]');

            for (var chk of checkboxes) {
                if (chk.checked) {
                    checkedCount++;
                }
            }
            if (checkedCount < 4) {
                $('.turnOn').addClass('change');
                $('.turnOn').removeClass('turnOn');
            } else {
                 for(var off of checkboxes){
                     if(off.checked){
                     }else{
                        //document.querySelector('input[name="pole'+off+'"]').disabled = false;

                        console.log(off.disabled);
                     }
                 }
                $('.change').addClass('turnOn');
                $('.change').removeClass('change');
            }
        }
}

W miejscu console.log(off.disabled) jest już po spełnionym warunku : zaznaczone 4 checkox i pokaż te nie aktywne.I teraz mam problem bo nie wiem jak to zadziałać bo wartość off jest :object HTMLInputElement i nie za bardzo można to użyć do jakiej kol-wiek pętli.Chyba ,że się da jakość to rozbić aby wartość off nie miała całego inputa a tylko jego name ?

komentarz 3 lipca 2019 przez michal_php Stary wyjadacz (13,700 p.)

A czy jest to możliwe i jak to zrobić aby pobrać określoną długość znaków z elementu do którego jest przypisany cały tag input . W senie jaj pobieram cały do off pobieram cały element inputa wraz z name i czy można jakoś od niego odseparować w samo name ?

let text = off;
let text1 = "<input type=\"checkbox\" name=\"pole1\" onchange=\"validation()\" value=\"pictogram/ghs-01.png\">";
console.log(text.substr(33, 1));

normalnie to nie mam problemów jeśli chodzi o pobranie z text1 ,Ale sytuacja polega na tym ,że text = off posiada cały ten tag text1 i czy można z niego ściągnąć samo name ?

Podobne pytania

0 głosów
2 odpowiedzi 2,010 wizyt
pytanie zadane 11 października 2018 w JavaScript przez Sobol3k Użytkownik (690 p.)
+1 głos
2 odpowiedzi 1,154 wizyt
pytanie zadane 3 listopada 2020 w JavaScript przez ptomeccc Użytkownik (800 p.)
0 głosów
1 odpowiedź 143 wizyt
pytanie zadane 31 lipca 2019 w JavaScript przez michal_php Stary wyjadacz (13,700 p.)

92,575 zapytań

141,424 odpowiedzi

319,649 komentarzy

61,960 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!

...