Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [javascript][jquery] Uniwersalny mechanizm ustalania maksymalnej długości danego pola input
Forum PHP.pl > Forum > Po stronie przeglądarki
kukix
Witam.

Więc tak mam taki mechanizm ustalania aby w danym polu input mogła być tylko liczba całkowita albo rzeczywista.. po prostu przypisuje klase class="only_int" za pomoca jQuery waliduje dane pole..

Teraz mam problem.. jak niepozwolić wpisac w dane pole liczbę spoza podanego przedziału?

Ma ktoś może pomysł na taką funkcje? Gdzie miałbym zapisywać wartości tcy przedziałów? do znacznika title? :/

Czy pozostaje tylko walidacja tego pola w trakcie wysyłania formularza?
prowseed
Zakres mozesz sobie zapisac w id, np id="10-55"
  1. $(document).ready(function() {
  2.  
  3. $('.only_int').keyup(function(e){
  4. var zakres = $(this).attr("id");
  5. var expl = zakres.split('-');
  6. var dolny_zakres=expl[0];
  7. var gorny_zakres=expl[1];
  8. if(this.value > gorny_zakres) {
  9. this.value = gorny_zakres;
  10. }
  11. else if(this.value < dolny_zakres) {
  12. this.value = dolny_zakres;
  13. }
  14. });
  15. });


To taki prosty szablon, pisalem w szybkiej odpowiedzi, to nawet nie wiem, czy gdzies literowki nie mam, ale dojdziesz juz co do czego : )

//EDIT
wlasnie zauwazylem, ze jest troche lipa z wpisywaniem dolnej granicy :]

//EDIT2
lepiej sobie to sprawdzenie przeprowadzic podczas wysylania i w razie spelnienia ktorychs z powyzszych warunkow alert + return false;
kamil4u
Id nie może być liczbą( --edit-- ani zaczynać się od liczby --edit-- ).

HTML5 udostępnia nowe atrybuty min i max - wykorzystaj je.
Czyli sprawdź czy przeglądarka natywnie obsługuje te atrybuty i jeżeli nie to samemu je przypisz w JS.
kukix
Cytat(kamil4u @ 16.04.2012, 22:07:39 ) *
Id nie może być liczbą.

HTML5 udostępnia nowe atrybuty min i max - wykorzystaj je.
Czyli sprawdź czy przeglądarka natywnie obsługuje te atrybuty i jeżeli nie to samemu je przypisz w JS.



tzn, że mogę sobie po prostu zrobić <input type="text" name="aaa" min="5" max="20">

i do tego po prostu mam się odnieść przez jquery jak do atrybutów min i max?
Czy starsze przeglądarki nie będa protestowały?
kamil4u
Dzięki temu pomysłowi masz:
- zgodność ze specyfikacją HTML 5
- w nowszych przeglądarkach obsługujących min i max nic nie musisz robić, chyba że chcesz, bo np. chcesz mieć własne informacje o błędach, w trochę innym wydaniu
- w starszych przeglądarkach( bez obsługi HTML 5 ) za pomocą JS( czy jak chcesz to jQuery ) tworzysz odpowiednie zdarzenie( np. onchange lub onkeyup ), a w nim pobierasz wartość atrybutów min i max do tego prosty if i obsługa błędów i gotowe smile.gif Aha! Starsze przeglądarki zignorują ten atrybut, więc to nie jest żadną przeszkodą.

Powodzenia
prowseed
Nie będą protestowały, po prostu nie będą rozumiały tych atrybutów. [ //EDIT - dopiero zauważyłem, że @kamil4u napisał to samo, nie wiem, cache mam jakiś, czy co : ) ]

Owszem, id nie może być liczbą zgodnie ze standardami, jeśli więc mamy się tego trzymać, to id="limit-10-55" i robić tablicę trójelementową. Generalnie jednak zakres można odczytywać z atrybutów min i max. Zamiast keyup w moim przypadku możesz zastosować zdarzenie blur() albo focusout(), powinno to lepiej działać.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.