2013-09-27 17 views
6

mam wiele z tych typów wejść:Jak sprawdzić, czy jeden z typów plików ma wartość?

<input type="file" name="file_upload"> 

A gdy przycisk submit kliknięciu, chcę sprawdzić poprzez JS jeśli jeden pola te nie są puste (innymi słowy, istnieje co najmniej jeden plik przesłany).

Oto mój kod, który nie działa:

$('#upload-button').live('click', function() { 
    var has_selected_file = $('input[type=file]').val(); 

    if (has_selected_file) { 
    /* do something here */ 
    } 
    else { 
    alert("No file selected"); 
    } 
}); 

To nie zawsze alarmuje wybrany plik.

Odpowiedz

7

Zastosowanie .filter() do findout elementu wejściowego o wartości i sprawdzić długość

$('#upload-button').live('click', function() { 
    var has_selected_file = $('input[type=file]').filter(function(){ 
     return $.trim(this.value) != '' 
    }).length > 0 ; 

    if (has_selected_file) { 
     /* do something here */ 
    } 
}); 
+0

Thanks to działało, troska, aby wyjaśnić, co jest zastosowanie filtra i część powrotny też? –

+0

@BelmarkCaday Właśnie wprowadziłem aktualizację, aby naprawić błąd. –

+1

'filter' to natywna funkcja js, która wykonuje określoną funkcję na każdym elemencie obiektu/tablicy. Tutaj następuje iteracja kolekcji zmiennych wejściowych [plik] i zwraca tablicę wszystkich elementów z wybranym plikiem. Jeśli ta tablica ma niezerową długość, 'has_selected_file' jest prawdziwe .. stąd' coś ' – jagzviruz

1

można po prostu zrobić:

var has_selected_file = $.trim($('input[type=file]').val()); 

if (has_selected_file != "") { 
    /* do something here */ 
} 
else { 
    alert("No file selected"); 
} 
Powiązane problemy