Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [Joomla] input type="number" Nie działa w firefox
czarnyblack
post
Post #1





Grupa: Zarejestrowani
Postów: 5
Pomógł: 0
Dołączył: 27.04.2017

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


Witam.


Posiadam gotowy komponent dla Joomla i chciałem zmienić w nim pole tekstowe, żeby można było wprowadzać w nim tylko cyfry. Zmieniłem wpis type="text" na type="number". W chromie to działa, niestety w firefoxie nie i nie potrafię sobie z tym poradzić. Z tego co zdołałem doczytać, w firefoxie i tak po zmianie na "number" rozponaje tam też litery.


Poniżej kod pliku .xml

  1. <?xml version="1.0" encoding="utf-8"?>
  2. <fieldset name="details" addfieldpath="/components/com_easyappointment/models/fields">
  3. <field name="name" type="text"
  4. class="form-control booking-form" required="true"
  5. description="COM_EASYAPPOINTMENT_NAME"
  6. label="COM_EASYAPPOINTMENT_NAME" validate="" />
  7.  
  8. <field name="email" type="text"
  9. class="form-control booking-form"
  10. description="COM_EASYAPPOINTMENT_EMAIL"
  11. label="COM_EASYAPPOINTMENT_EMAIL" validate="/^[A-Za-z0-9-\._]{1,}@[\w-\.]*\.[\w]{2,}$/" />
  12.  
  13. <field name="phone" type="number"
  14. class="form-control booking-form"
  15. description="COM_EASYAPPOINTMENT_PHONE"
  16. label="COM_EASYAPPOINTMENT_PHONE" validate="/[\d\s.\-()+]*/" />
  17.  
  18.  
  19. <field name="address" type="number"
  20. class="form-control booking-form"
  21. description="COM_EASYAPPOINTMENT_ADDRESS"
  22. label="COM_EASYAPPOINTMENT_ADDRESS" validate="" />
  23.  
  24. <field name="comments" type="textarea"
  25. class="form-control booking-form"
  26. description="COM_EASYAPPOINTMENT_COMMENTS"
  27. label="COM_EASYAPPOINTMENT_COMMENTS" validate="" />
  28.  
  29. <fieldset name="details-hidden">
  30. <field name="appointmentDate" type="hidden" required="true" validate="/^[0-9]{4}-[0-9]{2}-[0-9]{2}$/" />
  31. <field name="startingTime" type="hidden" required="true" validate="/^[0-9]{1,}$/" />
  32. <field name="endingTime" type="hidden" required="true" validate="/^[0-9]{1,}$/" />
  33. <field name="staff" type="hidden" required="true" validate="/^[0-9]{1,}$/" />
  34. <field name="service" type="hidden" required="true" validate="/^[0-9]{1,}$/" />
  35. </form>
Go to the top of the page
+Quote Post
freemp3
post
Post #2





Grupa: Zarejestrowani
Postów: 467
Pomógł: 77
Dołączył: 6.09.2008
Skąd: Miechów / Kraków

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


Niestety firefox tak interpretuje pole typu "number" i tego nie zmienisz. Jedyne pocieszenie jest takie, że w przypadku wprowadzenia tekstu formularz nie zostanie wysłany, a pole zostanie podświetlone na czerwono.
Zamiast tego możesz dodać jakiś walidator w js, który będzie sprawdzał wprowadzane wartości i blokował wprowadzenie tekstu.


--------------------
Niemożliwym jest stworzenie czegokolwiek idiotoodpornego, ponieważ idioci są wyjątkowo pomysłowi.

https://www.aroch.pl
https://themeforest.net/user/aroch
https://www.astroblog.aroch.pl
https://www.4geeks.pl
Go to the top of the page
+Quote Post
czarnyblack
post
Post #3





Grupa: Zarejestrowani
Postów: 5
Pomógł: 0
Dołączył: 27.04.2017

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


Dzięki za naprowadzenie. Znalazłem coś takiego:

http://jsfiddle.net/Lm2hS/

W jaki sposób wykorzystać to w moim przypadku?
Go to the top of the page
+Quote Post
freemp3
post
Post #4





Grupa: Zarejestrowani
Postów: 467
Pomógł: 77
Dołączył: 6.09.2008
Skąd: Miechów / Kraków

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


W taki jak jest w podanym przez Ciebie przykładzie wink.gif

Jeśli masz więcej tego typu pól i nie chcesz do każdego z nich dodawać tego ręcznie możesz w jakimś globalnym pliku z skryptami JS przypisać tą funkcję z przykładu do zdarzenia "onkeypress", dla wszystkich pól typu "number".


--------------------
Niemożliwym jest stworzenie czegokolwiek idiotoodpornego, ponieważ idioci są wyjątkowo pomysłowi.

https://www.aroch.pl
https://themeforest.net/user/aroch
https://www.astroblog.aroch.pl
https://www.4geeks.pl
Go to the top of the page
+Quote Post
czarnyblack
post
Post #5





Grupa: Zarejestrowani
Postów: 5
Pomógł: 0
Dołączył: 27.04.2017

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


No dobrze, próbowałem znaleźć jakieś informacje, ale nawet nie wiem jak zacząć szukać. Specjalnie kupiłem gotowy komponent żeby nie musieć kombinować, nawet zapytałem tego co go tworzył i odpisał mi, że w firefox to nie działa i tyle ; ) Także skoro on nie jest w stanie mi pomóc to sam zacząłem kombinować, ale programistą nie jestem i niestety mam z tym problem. Nie do końca rozumiem, czy maja to być dwa osobne pliki i w tym moim pliku xml mam wskazać na .js? Próbowałem w ten sposób i nie działa. Mam tylko jedno pole textowe.
Go to the top of the page
+Quote Post
viking
post
Post #6





Grupa: Zarejestrowani
Postów: 6 380
Pomógł: 1116
Dołączył: 30.08.2006

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


A jaki to problem? Firefox i tak nie pozwoli wysłać tego formularza, wyświetli wcześniej błąd.


--------------------
Go to the top of the page
+Quote Post
czarnyblack
post
Post #7





Grupa: Zarejestrowani
Postów: 5
Pomógł: 0
Dołączył: 27.04.2017

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


To jak w takim razie ma to być rozwiązane żeby działało w Firefox?
Go to the top of the page
+Quote Post
freemp3
post
Post #8





Grupa: Zarejestrowani
Postów: 467
Pomógł: 77
Dołączył: 6.09.2008
Skąd: Miechów / Kraków

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


Jeśli masz tylko jedno takie pole to po prostu dodaj do niego ten fragment odpowiedzialny za sprawdzanie
Kod
onkeypress="return isNumber(event)"


Oprócz tego, skoro to jest gotowy komponent, znajdź jego główny plik js i dodaj na samym końcu funkcję sprawdzającą:
Kod
function isNumber(evt) {
    evt = (evt) ? evt : window.event;
    var charCode = (evt.which) ? evt.which : evt.keyCode;
    if (charCode > 31 && (charCode < 48 || charCode > 57)) {
        return false;
    }
    return true;
}


Tak jak napisał @viking, pytanie, czy jest to w ogóle potrzebne? Firefox nie wyśle formularza jeśli w tym polu będzie tekst.


--------------------
Niemożliwym jest stworzenie czegokolwiek idiotoodpornego, ponieważ idioci są wyjątkowo pomysłowi.

https://www.aroch.pl
https://themeforest.net/user/aroch
https://www.astroblog.aroch.pl
https://www.4geeks.pl
Go to the top of the page
+Quote Post
czarnyblack
post
Post #9





Grupa: Zarejestrowani
Postów: 5
Pomógł: 0
Dołączył: 27.04.2017

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


Wiem, ja też byłbym zdania żeby tego nie zmieniać skoro i tak dalej nie puszcza formularz, ale to zalecenia odgórne i niestety muszę to zmienić.

Zrobiłem tak jak napisałeś. Mam pliki information.xml i information.js niestety po dodaniu tych linijek zero efektu.
Go to the top of the page
+Quote Post
freemp3
post
Post #10





Grupa: Zarejestrowani
Postów: 467
Pomógł: 77
Dołączył: 6.09.2008
Skąd: Miechów / Kraków

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


Sprawdź czy w wygenerowanym formularzu przy polu "number" jest ta modyfikacja oraz czy plik information.js jest załadowany na tej stronie. Jeśli tak sprawdź czy jest w nim kod z funkcją. Odśwież też cache przeglądarki.


--------------------
Niemożliwym jest stworzenie czegokolwiek idiotoodpornego, ponieważ idioci są wyjątkowo pomysłowi.

https://www.aroch.pl
https://themeforest.net/user/aroch
https://www.astroblog.aroch.pl
https://www.4geeks.pl
Go to the top of the page
+Quote Post

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

 



RSS Aktualny czas: 20.08.2025 - 05:57