var valid = false;
        $("#f1 input").each(function () {
            if($.trim($(this).val()) != 0) {
                valid = true;
            }
        });
        console.log(valid);

Powyżej kodu ma sprawdzić wszystkie wejścia wewnątrz # F1, a jeśli jakiekolwiek jest puste, drukuje fałszywe. Ale teraz wymaga tylko, aby jeden z każdego wejścia dziecka ma wartość do wydrukowania prawdziwego.

Jak mogę to naprawić?

1
sfsefsf33fs3fs3fs 28 czerwiec 2017, 12:15

3 odpowiedzi

Najlepsza odpowiedź

Przewróciłbym swoją logikę, aby valid jest aktualizowany tylko wtedy, gdy coś się nie powiedzie.

var valid = true;
$("#f1 input").each(function () {
    if($.trim($(this).val()) == 0) {
        valid = false;
    }
});
console.log(valid);
1
phuzi 28 czerwiec 2017, 09:19

Warunek ($.trim($(this).val()).length != 0) nie powiedzie się tylko, gdy wejście jest 0, zamiast tego musisz sprawdzić właściwość length wartości przyciętych.

if($.trim($(this).val()).length != 0){
  //.....
}

// or simply check the length property, since 0 is falsy value 
// and all other integers are truthy
if($.trim($(this).val()).length){
  //.....
}

filter()
var valid = $("#f1 input").filter(function () {
   return $(this).val().trim().length;
}).length > 0;

console.log(valid);
0
Pranav C Balan 28 czerwiec 2017, 09:30

Tak. Możesz przypisać fałszywe oświadczenie w innym stanie. może dodać indziej.

if ($.trim($(this).val()))

Tylko wystarczy, aby znaleźć pusty lub nie

var valid = false;
$("#f1 input").each(function() {
  if ($.trim($(this).val())) {
    valid = true;
  } else {
    valid = false;
  }
});
console.log(valid);
0
prasanth 28 czerwiec 2017, 09:18