<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" lang="pl-PL"> <head> <title>Strona z newsem</title> <meta http-equiv="Content-Type" content="text/html; charset=utf8" /> <script type="text/javascript"> window.onload = Laduj; var error = false; function Laduj() { document.forms['wyslij'].imie.onblur = SprawdzImie; document.forms['wyslij'].nazwisko.onblur = SprawdzNazwisko; } function SprawdzImie() { var imie = document.forms['wyslij'].imie.value; var imie2 = document.getElementById('imie2'); if (imie == '') { document.forms['wyslij'].imie.style.background = 'red'; imie2.innerHTML = 'Nie wpisałeś'; error = true; } else if(imie.length<5) { document.forms['wyslij'].imie.style.background = 'red'; imie2.innerHTML = 'za krótkie'; error = true; } else { document.forms['wyslij'].imie.style.background = 'green'; imie2.innerHTML = 'ok'; error = false; } if (error) { document.getElementById('submit').setAttribute('disabled', 'disabled'); } else { document.getElementById('submit').removeAttribute('disabled', 'disabled'); } } function SprawdzNazwisko() { var nazwisko = document.forms['wyslij'].nazwisko.value; var nazwisko2 = document.getElementById('nazwisko2'); if (nazwisko == '') { document.forms['wyslij'].nazwisko.style.background = 'red'; nazwisko2.innerHTML = 'Nie wpisałeś'; error = true; } else if(nazwisko.length<5) { document.forms['wyslij'].nazwisko.style.background = 'red'; nazwisko2.innerHTML = 'za krótkie'; error = true; } else { document.forms['wyslij'].nazwisko.style.background = 'green'; nazwisko2.innerHTML = 'ok'; error = false; } if (error) { document.getElementById('submit').setAttribute('disabled', 'disabled'); } else { document.getElementById('submit').removeAttribute('disabled', 'disabled'); } } </script> </head> <body> <form name="wyslij" action="" method="post"> <table> <tr> <td>Imię:</td><td><input type="text" name="imie" /></td> </tr> <tr> <td></td><td id="imie2"></td> </tr> <tr> <td>Nazwisko:</td><td><input type="text" name="nazwisko" /></td> </tr> <tr> <td></td><td id="nazwisko2"></td> </tr> <tr> <td>Adres e-mail:</td><td><input type="text" name="email" /></td> </tr> <tr> <td></td><td id="email2"></td> </tr> <tr> <td>Strona www:</td><td><input type="text" name="strona" /></td> <div id="strona2"></div> </tr> <tr> <td>Temat:</td><td><input type="text" name="temat" /></td> <div id="temat2"></div> </tr> <tr> <td>Treść:</td><td><textarea name="tresc" rows="5"></textarea></td> <div id="tresc2"></div> </tr> <tr> <td><input type="submit" value="Wyślij" id="submit" /></td> </tr> </table> </form> </body> </html>
Proszę nie patrzeć na kryteria walidacji bo są one prowizoryczne (puste imię, imię krótsze niż 5 znaków i nazwisko tak samo).
Chodzi o to, że jak wpiszę 2 błędne pola to jest ok, blokuje mi przycisk. Jeśli jednak jedno pole uzupełnię dobrze a drugie dalej nie to i tak mogę wysłać formularz, wystarczy że ominę pole niepoprawnie wypełnione. Chcę zrobić tak, żeby jeśli jest przynajmniej 1 źle wypełnione pole to żeby blokowało mi przycisk. Nie wiem jak to osiągnąć. Próbowałem dodać jeszcze 1 zmienną globalną i inkrementować ją jeśli wystąpi błąd, a później warunek, że jeśli ta zmienna jest różna od 0 to żeby blokowało, ale po pierwsze nie za dobrze to działa, po drugie jest to niedobre rozwiązanie. Kombinowałem na parę sposobów ale wynik zostaje taki sam.
Nie proszę o gotowca, raczej nakierowanie (logiczne bądź językowe), bo w końcu mam się nauczyć tego języka a nie żerować na innych. Za wszelkie wskazówki będę niezmiernie wdzięczny. Pozdrawiam.