Mam następujący kod, który sprawdza, czy wartości wejść, tekstur i wybór są puste, ale raczej niż funkcje dla każdego, próbowałem przechowywać je na jednej zmiennej za pomocą tablicy.

Ale gdy włączony jest obsługiwanie kliknięcia, coś powoduje pojawienie się komunikatu o błędzie, nawet jeśli wszystkie wejścia na stronie są wypełnione.

Czy ktoś wie, co może to powodować?

HTML:

$('#saveInvoice').click(function(e) {
  e.preventDefault();
  var $fields = [ $('input'), $('textarea'), $('select') ];
  var $emptyFields = $fields.filter(function() {
    return $.trim(this.value) === "";
  });
  if (!$emptyFields.length) {
    saveInvoice();
  } else {
    alert('Unable to save invoice. There are incomplete item fields.');
  }
});
0
user7138187 27 czerwiec 2017, 13:03

3 odpowiedzi

Najlepsza odpowiedź

Spróbuj wykonać następujące czynności ...

$('#saveInvoice').click(function(e) {
  e.preventDefault();
  var $fields = [ $('input'), $('textarea'), $('select') ];
  var $emptyFields = $fields.filter(function(element) {
    return $.trim(element.val()) === "";
  });
  if (!$emptyFields.length) {
    saveInvoice();
  } else {
    alert('Unable to save invoice. There are incomplete item fields.');
  }
});

Powinieneś uzyskać wartość elementów tablicy

0
ɢʀᴜɴᴛ 27 czerwiec 2017, 10:09

Masz dwa problemy.

Po pierwsze: selektory jQuery. Wziąłeś tablicę elementów. $ ("wejście") daje noce wszystkich wejść. Musisz określić indeks danych wejściowych, do których chcesz uzyskać dostęp do wartości. Na przykład $ ("wejście") [0] zapewnia pierwsze wejście znalezione na swojej stronie.

Po drugie: musisz przekazać element do filtrowania funkcji wywołania zwrotnego. Wewnętrzne wywołanie zwrotne filtra odnosi się do okna.

$('#saveInvoice').click(function(e) {
  e.preventDefault();
  var $fields = [ $('input')[0], $('textarea')[0], $('select')[0] ];
 
  var $emptyFields = $fields.filter(function(ele) {
    console.log(ele.value);  
    return $.trim(ele.value) === "";
  });
  if (!$emptyFields.length) {
    //saveInvoice();
    
  } else {
    alert('Unable to save invoice. There are incomplete item fields.');
  }
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<form>

Input : <input type=""><br>

TextArea: <textarea></textarea><br>

Select: <select><option value="1">A</option></select>

<button id="saveInvoice">Save</button>

</form>
0
Dinesh undefined 27 czerwiec 2017, 10:13

Wymień to.Value za pomocą to.val ()

1
Gokulan P H 27 czerwiec 2017, 10:10