![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 14 Pomógł: 0 Dołączył: 9.05.2005 Ostrzeżenie: (0%) ![]() ![]() |
czy da się jakoś ograniczyć ilość znaków możliwych do wpisania w <texarea> (IMG:http://forum.php.pl/style_emoticons/default/questionmark.gif) lub czy znacie jakies inne funkcje aby było to możliwe.
|
|
|
![]()
Post
#2
|
|
Grupa: Moderatorzy Postów: 36 557 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
|
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 14 Pomógł: 0 Dołączył: 9.05.2005 Ostrzeżenie: (0%) ![]() ![]() |
wielkie dzięki właśnie o coś takiego mi chodziło. A dałoby się jeszcze dodac w skrypcie zeby po wyswietleniu komunikatu pole textarea było czyszczone?
|
|
|
![]()
Post
#4
|
|
Grupa: Moderatorzy Postów: 36 557 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
A wczym problem. Zamiast obcinac do żądanej dlugości po prostu wpiisz nic.
Kod function MaxL(obj)
{ if (obj.value.length>10) { alert('Za duży text. Max. 10 znaków'); obj.value=''; } } |
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 1 190 Pomógł: 27 Dołączył: 23.04.2005 Ostrzeżenie: (0%) ![]() ![]() |
Cytat(nospor @ 2005-05-10 06:18:01) Funkcja js ograniczjąca przykladowo do 10 znaków: Kod function MaxL(obj) { if (obj.value.length>10) { alert('Za duży text. Max. 10 znaków'); obj.value=obj.value.substr(0,10); } } Wykorzystanie w textarea: Postanowiłem sprawdzić jak się ta funkcja sprawuje. I jest pewein problem. Jeśli przekroczę 10 znaków to dostane komunkat, że przekroczyłem. Ale jeśli dodam w php sprawdzanie długości to wyglada to tak: 1. podaję 11 znaków 2. JS wywala komunikat ze przekroczylem dozwoloną ilość i skraca do 10 3. klikm zapisz 4. php wywala komunikat ze przekroczylem 10 znaków Jak zrobić żęby php widział już poprawioną wersję?? EDIT: Powyższy problem występuje jeśli w polu textarea używam entera przy wpisywaniu, żeby nie korzytsać z paska przewijania. Jeśli nie używam entera, tylko pisze wszystko jednym ciągiem to problemu nie ma Ten post edytował J4r0d 14.05.2005, 15:37:09 |
|
|
![]()
Post
#6
|
|
Grupa: Moderatorzy Postów: 36 557 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
Nie bardzi widzę problem. Też uzywam entera w textarea, wywala alerte, skraca. Potewm musze jescze raz submit zrobić i jest ok. Nie wiem w czym problem
|
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 1 190 Pomógł: 27 Dołączył: 23.04.2005 Ostrzeżenie: (0%) ![]() ![]() |
Cytat(nospor @ 2005-05-16 06:47:39) Nie bardzi widzę problem. Też uzywam entera w textarea, wywala alerte, skraca. Potewm musze jescze raz submit zrobić i jest ok. Nie wiem w czym problem Dziękuje z odpowiedź. Kawałek kodu z formularzem: wcześniej w sekcji <head> wkeloja funkjca JS I kawałek kodu skryptu, któy sprawdza długość łańcucha na wypadek wyłączenia JS w przeglądarce
OPIS PROBLEMU: PRZYPADEK I: Jeśli w polu textarea użytkownik wpisuje ciąg znaków bez używania entera, przekroczy 255 znaków to zostanie wyświetlony odpowiedni alert. Klika ok, skrypt JS obcina wpisany tekst do 255 znaków. Użytkownik klika zapisz, a skrypt zapisuje ciąg do bazy. - WSZYSTKO OK PRZYPADEK II: Jeśli w polu textarea użytkownik wpisuje ciąg znaków, używając przy tym entera, przekroczy 255 znaków (JS liczy entery) to zostanie wyświetlony odpowiedni alert. Klika ok, skrypt JS obcina wpisany tekst do 255 znaków (obcina od końca). Użytkownik klika zapisz, a skrypt wyświetla komunikat, że przekroczono limit 255 znaków. Tak jakby do skryptu przekazywane było 255 znaków + entery. Skrypt nie widzi, że JS obcieło do 255 znaków. Nie wiem jak sobie z tym poradzić. Może wywale skrypt JS (IMG:http://forum.php.pl/style_emoticons/default/sad.gif) Używam Firefoxa (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg) |
|
|
![]()
Post
#8
|
|
Grupa: Moderatorzy Postów: 36 557 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
Aby sprawdzić co ci przeslal do skryptu zrób test.
Daj dlugość znaków do 3; Wpisz powiedzmy ala<enter>ma<enter>kota, wyslij to. pOwinien ci js sie wydrzec, ze za duzo znkaów, obciac do 3 czyli do ala. Teraz wyswietl w php to co otrzymasz. Jak to bedzie ala to git, jak ala ma kota to pogadamy (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg) |
|
|
![]()
Post
#9
|
|
Grupa: Zarejestrowani Postów: 1 190 Pomógł: 27 Dołączył: 23.04.2005 Ostrzeżenie: (0%) ![]() ![]() |
Cytat(nospor @ 2005-05-16 11:06:36) Aby sprawdzić co ci przeslal do skryptu zrób test. Daj dlugość znaków do 3; Wpisz powiedzmy ala<enter>ma<enter>kota, wyslij to. pOwinien ci js sie wydrzec, ze za duzo znkaów, obciac do 3 czyli do ala. Teraz wyswietl w php to co otrzymasz. Jak to bedzie ala to git, jak ala ma kota to pogadamy (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg) Cytat Aby sprawdzić co ci przeslal do skryptu zrób test. Daj dlugość znaków do 3; Zrobiłem tak Cytat Wpisz powiedzmy ala<enter>ma<enter>kota, wyslij to. pOwinien ci js sie wydrzec, ze za duzo znkaów, obciac do 3 czyli do ala. Tak robi. Wywala alert, klikam ok i pozostaje ale w polu formularza. Daje wyślij i Cytat Teraz wyswietl w php to co otrzymasz. Jak to bedzie ala to git, jak ala ma kota to pogadamy (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg) Skrypt wyświetla ala. Cytat Teraz wyswietl w php to co otrzymasz. Jak to bedzie ala to git(...) Więc gdzie robie błąd? EDIT: Dodałem w skrypcie
i okazuje się że przesyła napis ala i jakiś znak - chyba enter... (IMG:http://forum.php.pl/style_emoticons/default/sad.gif) Ten post edytował J4r0d 16.05.2005, 15:31:48 |
|
|
![]()
Post
#10
|
|
Grupa: Moderatorzy Postów: 36 557 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
Hmmm, no dziwne. Mi przesyła tylko 3 znaki. Też dałem strlen().
Ja gdy wciskam wyślij i jest zadużo znaków to wywala alert i obcina. POtem muszę jeszcze raz wcisnąć wyślij aby wyslalo już poprawione. W takiej sytuacji tam nie ma gdzie się żaden enter wcisnąć. Dziwne. Robilem teraz wszystkie chyba mozliwe testy i jest caly czas ok. Naprawdę nie wiem gdzie może tkwić problem. Może jako tymczasowe rozwiązanie zrób coś takiego: usuń biale znaki (entery i spacje) z konca treści i dopiero potem sprawdzaj dlugość. Wkoncu bialy znak na koncu za bardzo nikomu si ę nie przyda.
i pamietaj, aby indyexy w tablicach podawać w ciapkach (jesli są stringiem). Bez tego też pójdzie, ale to malo eleganckie i chyba nawet warninga wywala. czyli daj $_POST['tresc'] a nie $_POST[tresc]. Pozdro. Daj znać jak ci się uda coś z tym zrobić. |
|
|
![]()
Post
#11
|
|
Grupa: Zarejestrowani Postów: 1 190 Pomógł: 27 Dołączył: 23.04.2005 Ostrzeżenie: (0%) ![]() ![]() |
@nospor: wiem w czym problem. JS traktuje entery (zlicza je) jako 1 znak a php jako 2.
Jeśli w formularzu podam coś takiego Kod 1 to dla JS jest to 9znaków natomiast do skryptu php przesylane jest 13. Nawet jak usunę z końca tego entera to nic to nie zmieni. Poszedłem za poradą crashu i zastosowałem 2 3 4 5 do sptrawdzania długości. Niby wszystko ok ale przetestowałem co się stanie jak JS będzie wyłączone a Ty podasz naprzyklad taki tekst: Cytat ale ma kotka, kotek ma hiv i ala ma problem Sam zobacz ile tak naprawde zostanie zapisane do bazy.. Ilość możliwych (widocznych dla użytkownika znaków) zmniejsza się wraz z ilością użytych enterów... Naprawdę lepiej będzie zastosować tylko sprawdzanie w php z opcją przesyłu przez POST tego co już użytkownik wpisał (gdyb wopisał za dużo znaków) i nię bedzie musiał pisać od nowa.. Bo o to chyba chodzi w tym całym zamieszsaniu pozdrawiam i dzięki za pomoc |
|
|
![]()
Post
#12
|
|
Grupa: Moderatorzy Postów: 36 557 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
jeszcze raz to potestowalem z enterami.
js tak samo jak php traktuje enter (\r\n) jako dwa znaki. Zrób test: daj ograniczenie na 5 znaków wpisz 1<enter>2<enter> Będziesz więc miał ciąg:1\r\n2\r\n czyli 6 znaków. Wywali ci alert i obetnie do 5 czyli do ciągu:1\r\n2\r. Tak przesłany ciąg php zinterpretuje jednak jako 1\r\n2\r\n, czyli doda sobie na koniec \n w sumie 6 znaków. Wystawczy więc usunąć biale znaki z konca i bedzie wtedy ok czyli 1\r\n2. a więc daj tak: $tresc=rtrim($_POST['tresc']) i wszystko będzie grało (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg) Ten post edytował nospor 17.05.2005, 11:35:03 |
|
|
![]()
Post
#13
|
|
Grupa: Zarejestrowani Postów: 1 190 Pomógł: 27 Dołączył: 23.04.2005 Ostrzeżenie: (0%) ![]() ![]() |
Cytat(nospor @ 2005-05-17 10:34:01) daj ograniczenie na 5 znaków wpisz 1<enter>2<enter> Będziesz więc miał ciąg:1\r\n2\r\n czyli 6 znaków. Wywali ci alert i obetnie do 5 czyli do ciągu:1\r\n2\r. Nie wywala. Dopiero jak dam: Kod 1 to kasuje ostani enter i zostaje2 3 Kod 1 2 3 Dam sobie z tym spokój. Mówie Ci, że JS traktuje u mnie enter jako 1 znak (Firefox) pozdrawiam |
|
|
![]()
Post
#14
|
|
Grupa: Zarejestrowani Postów: 220 Pomógł: 19 Dołączył: 25.04.2009 Ostrzeżenie: (0%) ![]() ![]() |
Sorki, że odgrzebuję tak stary temat, ale trafiłem na identyczny problem.
Mam podwójną walidację textarea. JS informuje użytkownika, że tekst jest dłuższy niż 500 znaków i go przycina a potem jeszcze skrypt PHP też sprawdza i też przycina. Używam do tego mb_strlen(utf-8) oraz mb_substr(utf-8). Jeśli w tekście nie ma enterów (a entery są dla mnie istotne - musi być możliwość ich używania) to obie walidacje działają tak samo. Jeśli są entery to obcięcie za pomocą PHP da rezultat mniejszy od obcięcia przez JS o właśnie liczbę enterów. Przykład: wejście: tekst 600 znaków, 10 enterów wyjście JS: tekst 500 znaków wyjście PHP: tekst 490 znaków. Coś więcej może już wiadomo na ten temat po 5 latach? Ten post edytował qrzysztof 28.02.2010, 20:28:35 |
|
|
![]()
Post
#15
|
|
Grupa: Zarejestrowani Postów: 72 Pomógł: 13 Dołączył: 12.04.2009 Ostrzeżenie: (0%) ![]() ![]() |
Może po prostu \r\n zamieniaj na \n zlicz znaki i zamień \n na \r\n (w php).
Ten post edytował icetique 28.02.2010, 21:06:30 |
|
|
![]()
Post
#16
|
|
Grupa: Zarejestrowani Postów: 220 Pomógł: 19 Dołączył: 25.04.2009 Ostrzeżenie: (0%) ![]() ![]() |
Tak też zrobiłem. Zliczyłem entery i obcinam w PHP do 500+liczba enterów. W bazie leci to do TEXT, więc i tak nie ma to większego znaczenia. Gdybym chciał zrobić VARCHAR(500) to już trzeba by trochę bardziej zakombinować.
Tyle, że pojawił się nowy problem. Cudzysłowy powodują to samo. Chyba wszystkie znaki z "ucieczką" będzie trzeba zliczyć. Dodałem jeszcze stripslashes i powinno już być ok. |
|
|
![]() ![]() |
![]() |
Aktualny czas: 15.09.2025 - 15:54 |