2015-08-17 21 views
7

To nie jest pytanie JS, tylko szukanie przejrzystego rozwiązania css, jeśli to możliwe.input [type = "file"] sprawdź istnienie załącznika pliku za pomocą css

Dla przycisk radiowy lub pole wyboru możemy użyć klasy :checked pseudo:

input{ 
    % styles % 
} 
input:checked{ 
    % another styles % 
} 

istnieją sztuczki do sprawdzenia, czy plik istnieje przywiązanie z CSS?

+11

Nie. Podczas wprowadzania danych ustawia wartość elementu. Obecnie nie ma możliwości sprawdzenia, czy element wejściowy ma wartość, czy nie w CSS. Zobacz http://stackoverflow.com/questions/16952526/detect-if-an-input-has-text-in-it-using-css Jeśli wymagane jest wprowadzenie pliku, sprawdź te odpowiedzi, zobaczysz rozwiązanie dotyczące ustawienie wymaganego atrybutu. – yts

+0

Dziękuję. Spodziewałem się tej odpowiedzi, ale nie byłem pewien. – KZee

Odpowiedz

3

(zaktualizowane, ze względu na nieporozumienia pytanie)

To jest możliwe, aby sprawdzić, czy plik został przymocowany za pomocą atrybutu required.

Patrz: http://jsfiddle.net/1ua59jt1/1/

HTML:

<input id="file" type="file" name="fileselect" required="required" /> 

CSS:

#file:valid { color: green; } 
#file:invalid { color: red; } 

Ale nigdy nie można naprawdę zweryfikować, czy "poprawny" plik został wybrany w ten sposób. Możesz tylko sprawdzić, czy plik nie został w ogóle wybrany.


// zmiana oddania:

Atrybut required jest HTML5. Należy pamiętać, że nie wszystkie przeglądarki obsługują to: http://www.w3schools.com/tags/att_input_required.asp

Oznacza to, że jedynym sposobem na zaufanego klienta walidacji bocznej używa JavaScript. Jeśli chcesz to zrobić, zalecamy użycie atrybutu novalidate w formularzu, aby wyłączyć domyślną weryfikację przeglądarki (http://www.w3schools.com/tags/att_form_novalidate.asp).

Ale zawsze używaj również sprawdzania poprawności po stronie serwera. Nigdy nie możesz upewnić się, że użytkownik włączył jaavscript lub nie manipulował javascriptem. Najlepszym sposobem jest zawsze sprawdzanie wartości po stronie, nad którą masz pełną kontrolę: serwer, czyli twoje działanie, do którego formularz wysyła swoje dane.

+0

Jeszcze raz: "To nie jest pytanie JS, tylko szukanie przejrzystego rozwiązania css, jeśli to możliwe." Pełna i poprawna odpowiedź została podana w pierwszym komentarzu. – KZee

+0

W pewnym sensie przeczytałem, że chcesz sprawdzić, czy został wybrany plik _valid_. Jeśli chcesz tylko określić za pomocą CSS, czy w ogóle nie został wybrany jakiś plik, możesz użyć atrybutu "required" do tego. Zaktualizowałem swoją odpowiedź. Przepraszam za nieporozumienie. – Seika85

+0

Niezły pomysł! Nie jest to rozwiązanie uniwersalne, ponieważ wymagany atrybut nie zawsze jest możliwy, ale czasami może być przydatny. – KZee

Powiązane problemy