Pārbaudiet, vai ievades ir tukšas, izmantojot jQuery

Man ir veidlapa, kurā vēlos, lai visi lauki būtu aizpildīti. Ja tiek noklikšķināts uz lauka, bet tas netiek aizpildīts, es vēlētos, lai tiktu parādīts sarkans fons.

Šeit ir mans kods:

$('#apply-form input').blur(function () {
  if ($('input:text').is(":empty")) {
    $(this).parents('p').addClass('warning');
  }
});

Tas piemēro brīdinājuma klasi neatkarīgi no tā, vai lauks ir vai nav aizpildīts.

Ko es daru nepareizi?

Risinājums
$('#apply-form input').blur(function()
{
    if( !$(this).val() ) {
          $(this).parents('p').addClass('warning');
    }
});

Un jums nav obligāti nepieciešams .length vai pārbaudīt, vai tas ir >0, jo tukša virkne tik un tā ir false, bet, ja vēlaties, lasāmības labad:

$('#apply-form input').blur(function()
{
    if( $(this).val().length === 0 ) {
        $(this).parents('p').addClass('warning');
    }
});

Ja esat'pārliecināts, ka tas vienmēr darbosies ar teksta lauka elementu, tad varat vienkārši izmantot this.value.

$('#apply-form input').blur(function()
{
      if( !this.value ) {
            $(this).parents('p').addClass('warning');
      }
});

Jāņem vērā arī tas, ka $('input:text') sagrābj vairākus elementus, norādiet kontekstu vai izmantojiet atslēgas vārdu this, ja vēlaties tikai atsauci uz vienu elementu (ar nosacījumu, ka konteksta pēcnācējos/bērnos ir viens teksta lauks).

Komentāri (4)
if ($('input:text').val().length == 0) {
      $(this).parents('p').addClass('warning');
}
Komentāri (2)

Pseidoselektors :empty tiek izmantots, lai pārbaudītu, vai elementā nav atvasinātu elementu, jums ir jāpārbauda vērtība :

$('#apply-form input').blur(function() {
     if(!this.value) { // zero-length string
            $(this).parents('p').addClass('warning');
     }
});
Komentāri (0)