Rozważ symulację pola wejściowego ze stałym przedrostkiem lub sufiksem przy użyciu zakresu z obramowaniem wokół pola wejściowego bez obramowania. Oto podstawowy przykład rozpoczęcia:
W przeciwieństwie do zaakceptowanej odpowiedzi, zachowa to wyróżnienie sprawdzania poprawności danych wejściowych, takie jak czerwona ramka, gdy wystąpi błąd.
Masz rację, floatjest zły, więc używam w display:inline-blockpołączeniu z vertical-align:bottomteraz :) Nie mogę jednak szybko zrobić skrzypiec, w moim obecnym przykładzie jest zbyt wiele innych CSS ;-)
Podoba mi się ta odpowiedź niż zaakceptowana, ponieważ ta (jak wspomina autor) zachowuje zachowanie walidacji bootstrapa, co jest świetne!, Dziękuję za tę pomoc.
Możesz zawinąć swoje pole wejściowe w zakres, który ty position:relative;. Następnie dodajesz za pomocą :beforecontent:"€"symbolu waluty i tworzysz
position:absolute. Działający JSFiddle
Jest to bardzo zbliżone do tego, czego chcę, ale dane wejściowe nie są stacjonarne względem szerokości strony i nie mogą używać wartości bezwzględnych. Względny również przesuwa symbol. Jak możemy ustawić pozycję bezwzględną / względną w stosunku do wejścia w lewym górnym rogu?
@VincentKok Po zapytaniu wygląda na to, że zależy to od kraju, kraj latynosów europejskich (Francja, Hiszpania, ...) umieści go po prawej, a kraj północno-wschodniej europy po lewej, możesz spróbować z amazone na przykładzie : www.amazone.fr, www.amazone.nl, ...
Ponieważ nie można zrobić ::beforez content: '$'na wejściach i dodanie elementu pozycjonowanego bezwzględnie dodaje dodatkowy html - Lubię robić w css tło SVG inline.
Ponieważ przeglądarki mogą renderować elementy wejściowe jako „elementy zastępowane” (np. Jako natywne widżety systemu), oznacza to, że background-imagemoże to nie być obsługiwane lub przeglądarka może renderować sam widget zamiast korzystać z widgetów dostarczonych przez system.
Skończyło się na tym, że potrzebowałem, aby typ nadal pozostał jako liczba, więc użyłem CSS, aby wepchnąć znak dolara w pole wejściowe, używając pozycji bezwzględnej.
Umieść „$” przed polem wprowadzania tekstu zamiast wewnątrz. To znacznie ułatwia walidację danych liczbowych, ponieważ nie trzeba analizować znaku „$” po przesłaniu.
Za pomocą JQuery.validate () (lub innego) można dodać reguły walidacji po stronie klienta, które obsługują walutę. Umożliwiłoby to umieszczenie „$” wewnątrz pola wejściowego. Ale nadal musisz przeprowadzić walidację po stronie serwera dla bezpieczeństwa, a to stawia Cię z powrotem w sytuacji, w której musisz usunąć '$'.
Dziękuję Ci! Byłem tego świadomy, ale tak naprawdę potrzebowałem, aby mój znak waluty znajdował się w polu tekstowym. Poniżej znajduje się lepsza odpowiedź, która, jak sądzę, może być pomocna dla wielu ludzi.
@Hristo: Cieszę się, że znalazłeś odpowiednie rozwiązanie. Ale dla przypomnienia, ten, który oznaczyłeś jako odpowiedź, nie umieszcza twojego $ w polu wejściowym. To tylko sprawia, że wydaje się, że jest tam ze stylizacją. To powiedziawszy, jest zdecydowanie zgrabny!
Tak, wizualnie rozwiązuje problem, podczas gdy twoja sugestia tylko wskazuje (tak, nadal we właściwym kierunku), ale nie nazwałbym tego rozwiązaniem. Jeszcze raz bardzo dziękuję i pamiętaj, że nie chciałem tu nikogo urazić!
Pseudoselektory: before i: after CSS mogą być używane tylko w przypadku tagów kontenerów i nie działają dla znaczników wejściowych. stackoverflow.com/questions/2587669/…
Innym rozwiązaniem, które preferuję, jest użycie dodatkowego elementu wejściowego dla obrazu symbolu waluty. Oto przykład wykorzystujący obraz lupy w polu tekstowym wyszukiwania:
dane wejściowe nie obsługują pseudoelementów w CSS3. Innymi słowy, jest to niemożliwe w przypadku czystego CSS. Jednak jeśli używasz jquery, możesz użyć $ ("input"). After ("$");
Żadna z tych odpowiedzi naprawdę nie pomaga, jeśli zależy ci na wyrównaniu lewej krawędzi z innymi polami tekstowymi w formularzu wejściowym.
Zalecałbym umieszczenie znaku dolara absolutnie w lewo o około -10 pikseli lub w lewo o 5 pikseli (w zależności od tego, czy chcesz go umieścić w polu wejściowym, czy poza nim). Rozwiązanie wewnętrzne wymaga zmiany kierunku: rtl na wejściu css.
Możesz również dodać wypełnienie do danych wejściowych, aby uniknąć kierunku: rtl, ale spowoduje to zmianę szerokości kontenera wejściowego, aby nie pasował do innych kontenerów o tej samej szerokości.
Technicznie rzecz biorąc, odpowiedzi CSS nie umieszczają również znaku dolara w kontenerze wejściowym. Myślę, że przyjęte rozwiązanie CSS wprowadza skomplikowany problem z wyrównaniem po zastosowaniu do typowej formy. Jak widać tutaj: plnkr.co/edit/uhOfLw5WB6DIn2le9GZm?p=preview
Zaktualizowałem to rozwiązanie, aby umieścić znak dolara wewnątrz wejścia: plnkr.co/edit/yshyuRMd06K1cuN9tFDv?p=preview (pozycja bezwzględna w lewo 5px i ustaw kierunek wprowadzania na rtl)
Używamy plików cookie i innych technologii śledzenia w celu poprawy komfortu przeglądania naszej witryny, aby wyświetlać spersonalizowane treści i ukierunkowane reklamy, analizować ruch w naszej witrynie, i zrozumieć, skąd pochodzą nasi goście.
Kontynuując, wyrażasz zgodę na korzystanie z plików cookie i innych technologii śledzenia oraz potwierdzasz, że masz co najmniej 16 lat lub zgodę rodzica lub opiekuna.