Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [javascript][jquery] Uniwersalny mechanizm ustalania maksymalnej długości danego pola input, Macie jakieś ciekawy pomysł jak to rozwiązać?
kukix
post
Post #1





Grupa: Zarejestrowani
Postów: 600
Pomógł: 2
Dołączył: 1.09.2002
Skąd: Wrocław

Ostrzeżenie: (0%)
-----


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?

Ten post edytował kukix 16.04.2012, 12:52:01
Go to the top of the page
+Quote Post
prowseed
post
Post #2





Grupa: Zarejestrowani
Postów: 433
Pomógł: 64
Dołączył: 29.01.2011
Skąd: Warszawa

Ostrzeżenie: (0%)
-----


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;

Ten post edytował prowseed 16.04.2012, 19:54:06
Go to the top of the page
+Quote Post
kamil4u
post
Post #3





Grupa: Zarejestrowani
Postów: 2 350
Pomógł: 512
Dołączył: 4.01.2009
Skąd: Wrocław / Świdnica

Ostrzeżenie: (0%)
-----


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.

Ten post edytował kamil4u 16.04.2012, 21:36:54
Go to the top of the page
+Quote Post
kukix
post
Post #4





Grupa: Zarejestrowani
Postów: 600
Pomógł: 2
Dołączył: 1.09.2002
Skąd: Wrocław

Ostrzeżenie: (0%)
-----


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?

Ten post edytował kukix 16.04.2012, 21:15:50
Go to the top of the page
+Quote Post
kamil4u
post
Post #5





Grupa: Zarejestrowani
Postów: 2 350
Pomógł: 512
Dołączył: 4.01.2009
Skąd: Wrocław / Świdnica

Ostrzeżenie: (0%)
-----


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 (IMG:style_emoticons/default/smile.gif) Aha! Starsze przeglądarki zignorują ten atrybut, więc to nie jest żadną przeszkodą.

Powodzenia
Go to the top of the page
+Quote Post
prowseed
post
Post #6





Grupa: Zarejestrowani
Postów: 433
Pomógł: 64
Dołączył: 29.01.2011
Skąd: Warszawa

Ostrzeżenie: (0%)
-----


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ć.

Ten post edytował prowseed 16.04.2012, 22:11:37
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 27.09.2025 - 03:50