2015-04-18 15 views
6

Witryna ma 2 pola wprowadzania, wybieram tylko jedno pole, a druga jest niewidoczna. Teraz chcę zmienić .val() niewidocznego na .val() wybranego, więc oba pola ładują ten sam plik. Jak to działa?jQuery, wybierz Input FILE, a także ustaw inny INPUT

Gdybym to zrobić:

$('#input_file').change(function() { 
     var fileSelect = $(this).val(); 
     $('#hidden_input_file"]').val(fileSelect); 
     console.log(fileSelect); 
    }); 

otrzymuję ten błąd: Uncaught InvalidStateError: failed ustawić właściwość „wartość” na „HTMLInputElement”: Ten element wejściowy przyjmuje nazwę pliku, który może być tylko programowo ustaw na pusty ciąg znaków.

+0

Nie sądzę, można dynamicznie zmieniać wartość pola pliku ... btw, dlaczego chcesz przesłać ten sam plik z dwóch pól wejściowych ....? –

Odpowiedz

22

Twój kod jest prawie poprawne:

$('#hidden_input_file').val(fileSelect); 

To sprawi jQuery zmienić wartość wejścia. Jednak wartości o wartości z input type="file" nigdy nie można * zmienić za pomocą JavaScript (ani Flash, ani żadnych środków programowo). Jest to zabezpieczenie realizowane w wszystkich przeglądarek użytkowników końcowych, aby zapobiec internetowe z trywialny mischievery:

$('#hidden_input_file').on('blur', function (e) { 
    $('#hidden_input_file').val('c:\passwords.txt'); // won't work 
}); 

umożliwiając programmatical zmianę pliku adresu URL, który ma być przesłany z komputera użytkownika będzie monstrualny problem z zabezpieczeniami.

* Dotyczy tylko do JavaScript w sieci

+1

Po prostu zrobiłem inne pole widoczne ... – Maxi