Chcę, aby pole wyszukiwania na mojej stronie wyświetlało słowo „Szukaj” szarą kursywą. Gdy pole zostanie zogniskowane, powinno wyglądać jak puste pole tekstowe. Jeśli jest już w nim tekst, powinien wyświetlać tekst normalnie (czarny, nie kursywą). Pomoże mi to uniknąć bałaganu poprzez usunięcie etykiety.
BTW, jest to wyszukiwanie Ajax na stronie , więc nie ma przycisku.
javascript
html
Michael L. Perry
źródło
źródło
Odpowiedzi:
Inną opcją, jeśli chcesz korzystać z tej funkcji tylko w nowszych przeglądarkach, jest skorzystanie z obsługi oferowanej przez atrybut zastępczy HTML 5 :
W przypadku braku jakichkolwiek stylów w Chrome wygląda to następująco:
Możesz wypróbować wersje demo tutaj oraz w HTML5 Placeholder Styling z CSS .
Sprawdź zgodność tej funkcji w przeglądarce . Obsługa przeglądarki Firefox została dodana w wersji 3.7. Chrome jest w porządku. Internet Explorer dodał obsługę tylko w 10. Jeśli celujesz w przeglądarkę, która nie obsługuje symboli zastępczych wprowadzania danych, możesz użyć wtyczki jQuery o nazwie symbol zastępczy jQuery HTML5 , a następnie po prostu dodaj następujący kod JavaScript, aby ją włączyć.
źródło
Jest to znane jako znak wodny pola tekstowego i odbywa się to za pomocą JavaScript.
lub jeśli używasz jQuery, znacznie lepsze podejście:
źródło
Możesz ustawić symbol zastępczy za pomocą
placeholder
atrybutu w HTML ( obsługa przeglądarki ).font-style
Icolor
mogą być zmieniane z CSS (chociaż wsparcie przeglądarka jest ograniczona).źródło
Możesz dodać i usunąć specjalną klasę CSS oraz zmodyfikować wartość wejściową
onfocus
/ zaonblur
pomocą JavaScript:Następnie określ klasę podpowiedzi stylem, który chcesz w swoim CSS, na przykład:
źródło
Najlepszym sposobem jest połączenie zdarzeń JavaScript za pomocą biblioteki JavaScript, takiej jak jQuery lub YUI, i umieszczenie kodu w zewnętrznym pliku .js.
Ale jeśli chcesz szybkiego i brudnego rozwiązania, oto wbudowane rozwiązanie HTML:
Zaktualizowano : Dodano żądane kolory.
źródło
Jakiś czas temu opublikowałem rozwiązanie tego problemu na mojej stronie internetowej . Aby go użyć, zaimportuj pojedynczy
.js
plik:Następnie dodaj adnotacje do wszystkich danych wejściowych, które mają mieć wskazówki w klasie CSS
hintTextbox
:Więcej informacji i przykład są dostępne tutaj .
źródło
Oto funkcjonalny przykład z pamięcią podręczną biblioteki Google Ajax i odrobiną magii jQuery.
Byłby to CSS:
Byłby to kod JavaScript:
A to byłby HTML:
Mam nadzieję, że to wystarczy, aby zainteresować Cię zarówno GAJAXLib, jak i jQuery.
źródło
Teraz stało się to bardzo łatwe. W html możemy podać atrybut zastępczy dla elementów wejściowych .
na przykład
sprawdź więcej szczegółów: http://www.w3schools.com/tags/att_input_placeholder.asp
źródło
Dla użytkowników jQuery: link jQuery naspinskiego wydaje się uszkodzony, ale spróbuj tego: http://remysharp.com/2007/01/25/jquery-tutorial-text-box-hints/
Otrzymasz darmowy samouczek wtyczki jQuery jako bonus. :)
źródło
Zauważyłem, że wtyczka jQuery znak wodny jQuery jest lepsza niż ta wymieniona w górnej odpowiedzi. Dlaczego lepiej Ponieważ obsługuje pola wprowadzania hasła. Ponadto ustawienie koloru znaku wodnego (lub innych atrybutów) jest tak proste, jak utworzenie
.watermark
odwołania w pliku CSS.źródło
Nazywa się to „znakiem wodnym”.
Znalazłem znak wodny jQuery wtyczki jQuery, który, w przeciwieństwie do pierwszej odpowiedzi, nie wymaga dodatkowej konfiguracji (pierwotna odpowiedź wymaga również specjalnego połączenia przed przesłaniem formularza).
źródło
Użyj jQuery Form Notifier - jest to jedna z najpopularniejszych wtyczek jQuery i nie zawiera błędów, które robią niektóre inne sugestie jQuery tutaj (na przykład możesz swobodnie stylizować znak wodny, nie martwiąc się, czy zostanie zapisany w Baza danych).
jQuery Watermark używa pojedynczego stylu CSS bezpośrednio na elementach formularza (zauważyłem, że właściwości rozmiaru czcionki CSS zastosowane do znaku wodnego miały również wpływ na pola tekstowe - nie to, co chciałem). Zaletą jQuery Watermark jest to, że możesz przeciągać tekst do pól (jQuery Form Notifier nie pozwala na to).
Inny, sugerowany przez innych (ten na digitalbrush.com), przypadkowo prześle wartość znaku wodnego do twojego formularza, więc zdecydowanie odradzam.
źródło
Do renderowania tekstu użyj obrazu tła:
Następnie wszystko, co musisz zrobić, to wykryć
value == 0
i zastosować odpowiednią klasę:A kod JavaScript jQuery wygląda następująco:
źródło
Możesz łatwo napisać pole „Szukaj”, a następnie po zmianie fokusu usunąć tekst. Coś takiego:
<input onfocus="this.value=''" type="text" value="Search" />
Oczywiście, jeśli to zrobisz, własny tekst użytkownika zniknie po kliknięciu. Więc prawdopodobnie chcesz użyć czegoś bardziej niezawodnego:
źródło
Gdy strona ładuje się po raz pierwszy, w polu tekstowym pojawi się Wyszukiwanie, w kolorze szarym, jeśli chcesz.
Gdy pole wprowadzania zostanie aktywowane, zaznacz cały tekst w polu wyszukiwania, aby użytkownik mógł po prostu zacząć pisać, co spowoduje usunięcie zaznaczonego tekstu. Będzie to również działać dobrze, jeśli użytkownik chce użyć pola wyszukiwania po raz drugi, ponieważ nie będzie musiał ręcznie zaznaczać poprzedniego tekstu, aby go usunąć.
źródło
Podoba mi się rozwiązanie „Knowledge Chikuse” - proste i jasne. Wystarczy dodać wywołanie, aby rozmazać, gdy ładowanie strony jest gotowe, co ustawi stan początkowy:
źródło
Chcesz przypisać coś takiego do onfocus:
i to do onblur:
(Możesz użyć czegoś sprytniejszego, na przykład funkcji frameworka, aby zmienić nazwę klasy, jeśli chcesz).
W przypadku niektórych CSS takich jak to:
źródło
Używam prostego, jednowierszowego rozwiązania javascript, które działa świetnie. Oto przykład zarówno dla pola tekstowego, jak i dla obszaru tekstowego:
tylko „minusem” jest walidacja w $ _POST lub w walidacji Javascript przed zrobieniem czegokolwiek z wartością pola. Oznacza to, że sprawdzenie, czy wartością pola nie jest „Tekst”.
źródło
źródło
Przydatny jest prosty tag „wymagany” HTML.
Określa, że pole wprowadzania musi zostać wypełnione przed przesłaniem formularza lub naciśnięciem przycisku Prześlij. Oto przykład
źródło
Użytkownik AJAXToolkit ze strony http://asp.net
źródło