Mam formularz, w którym chciałbym, aby wszystkie pola były wypełnione. Jeśli pole zostanie kliknięte, a następnie nie wypełnione, chciałbym wyświetlić czerwone tło.
Oto mój kod:
$('#apply-form input').blur(function () {
if ($('input:text').is(":empty")) {
$(this).parents('p').addClass('warning');
}
});
Stosuje klasę ostrzegawczą niezależnie od tego, czy pole jest wypełnione czy nie.
Co ja robię źle?
jquery
validation
Keith Donegan
źródło
źródło
Odpowiedzi:
I niekoniecznie potrzebujesz
.length
ani nie widzisz, czy jest tak,>0
ponieważ pusty ciąg i tak zwraca wartość false, ale jeśli chcesz to dla celów czytelności:Jeśli jesteś pewien, że zawsze będzie działać na elemencie pola tekstowego, możesz po prostu użyć
this.value
.Należy również pamiętać, że
$('input:text')
pobiera wiele elementów, określa kontekst lub używathis
słowa kluczowego, jeśli chcesz po prostu odwołać się do samotnego elementu (pod warunkiem, że istnieje jedno pole tekstowe w potomkach / potomkach kontekstu).źródło
.val().length
i zamiast.length()
tego używałem samego elementu.Każdy ma dobry pomysł, ale lubię być bardziej wyraźny i obcinać wartości.
jeśli nie użyjesz .length, wtedy wpis „0” może zostać oznaczony jako zły, a wpis 5 spacji może zostać oznaczony jako ok bez $ .trim. Powodzenia.
źródło
this.val
będzieundefined
tam Musiałoby tak być$(this).val()
- ale nie ma w tym żadnej przewagi w różnych przeglądarkach, więc pominąłem to ze względu na zwięzłość / szybkość.Robienie tego przy rozmyciu jest zbyt ograniczone. Zakłada się, że skupiono się na polu formularza, więc wolę to zrobić po przesłaniu i odwzorować dane wejściowe. Po latach radzenia sobie z fantazyjnymi rozmyciami, skupieniem itp. Sztuczkami, uproszczenie sprawi, że będzie to bardziej użyteczne tam, gdzie się liczy.
źródło
źródło
$
wif (('input:text').val().length == 0) {
powinno byćif ($('input:text').val().length == 0) {
możesz użyć również ..
jeśli masz wątpliwości co do spacji, spróbuj ...
źródło
dlaczego nikt nie wspomniał
wydaje mi się bardziej jquery
źródło
Zdarzenie keyup wykryje, czy użytkownik również wyczyścił pole (tj. Backspace podnosi zdarzenie, ale backspace nie podnosi zdarzenia naciśnięcia klawisza w IE)
źródło
Zastanów się nad użyciem wtyczki sprawdzania poprawności jQuery . Może być nieco przesadny w przypadku prostych wymaganych pól, ale jest wystarczająco dojrzały, aby obsłużyć skrajne przypadki, o których nawet jeszcze nie pomyślałeś (ani nikt z nas, dopóki ich nie napotkamy).
Możesz otagować wymagane pola klasą „wymagane”, uruchomić $ („formularz”). Validate () w $ (document) .ready () i to wszystko.
Jest nawet hostowany w Microsoft CDN, dla szybkiej dostawy: http://www.asp.net/ajaxlibrary/CDN.ashx
źródło
:empty
Pseudo-selektor służy do sprawdzenia, czy element nie zawiera Childs, należy sprawdzić wartość:źródło
Jest jeszcze jedna rzecz, o której warto pomyśleć: obecnie może dodać klasę ostrzegawczą tylko wtedy, gdy jest pusta, co powiesz na usunięcie klasy ponownie, gdy formularz nie jest już pusty.
lubię to:
źródło
źródło
Oto przykład użycia klucza dla wybranego wejścia. Używa również przycinania, aby upewnić się, że ciąg tylko białych znaków nie wyzwala prawdziwej odpowiedzi. Jest to przykład, którego można użyć do uruchomienia pola wyszukiwania lub czegoś związanego z tego typu funkcjonalnością.
źródło
Sprawdź, czy wszystkie pola są puste i dodaj ON lub OFF na przycisku Filter_button
źródło
Możesz spróbować czegoś takiego:
Zastosuje
.blur()
zdarzenie tylko do danych wejściowych o pustych wartościach.źródło
źródło
W HTML 5 możemy użyć nowej „wymaganej” funkcji, wystarczy dodać ją do tagu, która ma być wymagana:
<input type='text' required>
źródło
Świetny zbiór odpowiedzi, chciałbym dodać, że możesz to zrobić również za pomocą
:placeholder-shown
selektora CSS. Trochę czystsze w użyciu IMO, szczególnie jeśli już używasz jQ i masz symbole zastępcze na swoich danych wejściowych.Możesz także skorzystać z selektorów
:valid
i:invalid
, jeśli masz wymagane dane wejściowe. Możesz użyć tych selektorów, jeśli używasz wymaganego atrybutu na wejściu.źródło
Czyste rozwiązanie tylko dla CSS:
źródło