javascript jquery preveri polje pred serialize()

ve kdo napako v naslednji kodi

    $('form').find('input').each(function (elem) {
        if ($(elem).val().length == 0) {
            alert('Polje ni izpoljneno!\n');
            $(elem).focus();
            return false;
        }
    });

hvala

12 odgovorov

$('form').each(function() {
if ($(this).val().length == 0) {
alert('Polje '+$(this).attr('name')+' ni izpoljneno!\n');
$(this).focus();
return false;
}
});

1

gre za formo z 20 inputi...

.each() funkcija mora dobiti callback s paramerti: idx, element
torej:

$('form').find('input').each(function (idx, elem) {
if ($(elem).val().length == 0) {
alert('Polje ni izpoljneno!\n');
$(elem).focus();
return false;
}
});

Ali pa:

$('form').find('input').each(function () {
if ($(this).val().length == 0) {
alert('Polje ni izpoljneno!\n');
$(this).focus();
return false;
}
});
1

In kje je problem, če je 20 polj?

Ti si samo izbrisal .find('input') (to bi se sprehodilo po 'form'-ih in this bi referenciral na sam 'form') in parameter od callbacka... Torej k večjemu bi moral napisati $('form input')

1

se vedno pa tole namesto da bi opozorilo v formo vpise 20x tudi prazne vrednosti...

$("input:radio").attr("checked", false);
$('form').submit(function (event) {
event.preventDefault();
$('form').find('input').each(function (idx, elem) {
if ($(elem).val().length == 0) {
alert('Polje ni izpoljneno!\n');
$(elem).focus();
return false;
}
});
$('<img src="ajax-loader.gif" class="ajaxLoader"/>').insertAfter("form");
var str = $('form').serializeArray();
$.ajax({
type: "POST",
url: "/insert.php",
data: str,
success: function () {
window.location.reload();
}
});

SlimDeluxe:
Ti si samo izbrisal .find('input') (to bi se sprehodilo po 'form'-ih in this bi referenciral na sam 'form') in parameter od callbacka... Torej k večjemu bi moral napisati $('form input')

@SlimDeluxe: Sorry res je, površno spisal :D

@mpose7: Tebi pošlje v vsakem primeru, namesto alert nastavi spremenljivko ki jo kasneje preverjaš, če je nastavljena ne izvedeš AJAX klica.

zakaj pa mi ne ustavi z opozorilom?

@mpose7: JS pač tako dela, ne zaključi izvajanja pri alertu.

http://jsfiddle.net/MXM4Z/

ja tole dela, se pa se malo bolj zakomplicira, ce so polja tipe="radio"