Witam!
Mam taki kodzik do prostego walidowania formularza. Niestety, takie rozwiązanie ma jeden zasadniczy błąd - przy każdej zmianie, nawet na lepsze do kontrolki dolicza się liczba. Gdy zmienimy to na złą wartość liczba się odejmie ale o jeden a wcześniej mogła ona być dodana np. 3 razy. Jak to poprawić? Albo jaki jest inny sposób podsumowania walidacji, nie dopuszczając do wysłania formularza?
var kontrolka = 0;
$("#nazwa").blur(function() {
$("#wait1").attr("src", "../images/load.gif");
var nazwa = $('#nazwa').val()
$.post("moduly/produkty/sprawdz.php", { nazwa: nazwa },
function(result){
if(result = 'ok' && nazwa.length > 5 ){
$('#wait1').attr("src", "../images/ok.png");
kontrolka += 1;
} else {
$('#wait1').attr("src", "../images/no.png");
kontrolka -= 1;
}
blokada();
});
})
$("#cena").blur(function() {
var cena = $('#cena').val();
cena = cena.replace(',', '.');
$("#cena").val(cena);
$('#wait2').attr("src", "../images/ok.png");
kontrolka += 1;
});
var czytnik = 0;
$("#ilosc_sz").blur(function() {
var ilosc_sz = $('#ilosc_sz').val();
if(ilosc_sz.length != 0){
czytnik += 1;
kontrolka += 1;
} else {
czytnik -= 1;
kontrolka -= 1;
}
zmien();
});
$("#maks_il").blur(function() {
var maks_il = $('#maks_il').val();
if(maks_il.length != 0){
czytnik += 1;
kontrolka += 1;
} else {
czytnik -= 1;
kontrolka -= 1;
}
zmien();
});
function zmien ()
{
if(czytnik == 2)
$('#wait3').attr("src", "../images/ok.png");
else
$('#wait3').attr("src", "../images/no.png");
blokada();
}
$("#dostepnosc").change(function() {
var dostepnosc = $('#dostepnosc').val();
if(dostepnosc != 'puste'){
$('#wait4').attr("src", "../images/ok.png");
kontrolka += 1;
} else {
$('#wait4').attr("src", "../images/no.png");
kontrolka -= 1;
}
blokada();
});
$("#kategoria").change(function() {
var kategoria = $('#kategoria').val();
if(kategoria != 'puste'){
$('#wait5').attr("src", "../images/ok.png");
kontrolka += 1;
} else {
$('#wait5').attr("src", "../images/no.png");
kontrolka -= 1;
}
blokada();
});
$("#opcje_przesylki").change(function() {
var opcje_przesylki = $('#opcje_przesylki').val();
if(opcje_przesylki != 'puste'){
$('#wait6').attr("src", "../images/ok.png");
kontrolka += 1;
} else {
$('#wait6').attr("src", "../images/no.png");
kontrolka -= 1;
}
blokada();
});
$("#opcje_platnosci").change(function() {
var opcje_platnosci = $('#opcje_platnosci').val();
if(opcje_platnosci != 'puste'){
$('#wait7').attr("src", "../images/ok.png");
kontrolka += 1;
} else {
$('#wait7').attr("src", "../images/no.png");
kontrolka -= 1;
}
blokada();
});
$("#tagi").blur(function() {
var tagi = $('#tagi').val();
if(tagi.length != 0){
$('#wait8').attr("src", "../images/ok.png");
kontrolka += 1;
} else {
$('#wait8').attr("src", "../images/no.png");
kontrolka -= 1;
}
blokada();
});
function blokada ()
{
alert(kontrolka);
if(kontrolka >= 9)
$('#submit').html('<input class="submit" type="submit" value="Dodaj ›">');
else
$('#submit').html('Niektóre pola nie zostały uzupełnione.');
}