Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [js] enter w textarea
Forum PHP.pl > Forum > Po stronie przeglądarki
grzegorz_g
mam oto taki kod do sprawdzania ilości znaków w textarea ale w momencie użycia entera kod źle liczy ilość znaków

  1.  
  2. testFormularza={
  3. rodzajePol:{
  4.  
  5. m20m100:[/^.{20,100}$/,'Proszę wpisać więcej niż 20 a mniej niż 100 znaków.'],
  6.  
  7. },
  8. testuj:function(f){
  9. var i,rodz;
  10.  


pokazuje błąd pomimo iż jest więcej znaków niż 20

wookieb
A od kiedy to długość ciągu sprawdza się wyrażeniem regularnym?

string.length = ilosc znaków
grzegorz_g
to tylko skrót funkcji do walidacjii formularza

  1.  
  2. testFormularza={
  3. rodzajePol:{
  4. niepuste:[/.+/,'Prosze wypełnić pole'],
  5. email:[/^[\w\.-]{2,}@[\w\.-]+\.[a-z]{2,5}$/,'Falsches E-mail-Format'],
  6. liczbacalkowita:[/^\d+$/,'Prawidłową wartością tego pola jest liczba całkowita'],
  7. liczbarzeczywista:[/^(\d+|\d+,\d+)$/,'Proszę podać liczbę rzeczywistą (można użyć przecinka)'],
  8. data:[/^\d+\-\d+\-\d{4}$/,'Proszę wpisać datę w formacie DD-MM-RRRR (numer dnia-numer miesiąca-rok) np. 23-02-2003'],
  9. kodpocztowy:[/^\d{2}\-\d{3}$/,'Niepoprawny format kodu pocztowego np. 06-600'],
  10. telefon:[/\+\d{11}/,'Niepoprawny format nr telefonu np. +48666666666'],
  11. m20m100:[/^.{3,40}$/,'Proszę wpisać nie więcej niż 40 znaków, ale też nie mniej niż 3.'],
  12. m3m25:[/^.{3,25}$/,'Proszę wpisać nie więcej niż 25 znaków, ale też nie mniej niż 3.'],
  13. m5m80:[/^.{3,60}$/,'Proszę wpisać nie więcej niż 60 znaków, ale też nie mniej niż 3.'],
  14. m20m200:[/^.{3,200}$/,'Proszę wpisać nie więcej niż 200 znaków, ale też nie mniej niż 3.'],
  15. m20m4000:[/^.{20,4000}$/,'Proszę wpisać nie więcej niż 4000 znaków, ale też nie mniej niż 20.'],
  16. duzelitery:[/^[A-Z]+$/,'Proszę używać wyłącznie dużych liter w tym polu'],
  17. max:[/^[.\s]{20,4000}$/,'Max'],
  18. banner:[/^\d{4}\x\d{4}$/,'Niepoprawny format banera np. 9999x9999'],
  19. url:[/^http\:\/\/www.+\.[a-z]{2,5}$/,'Proszę podać prawidłowy adres strony www np. <a href="http://www.strona.pl'" target="_blank">http://www.strona.pl'</a>]
  20. },
  21. testuj:function(f){
  22. var i,rodz;
  23.  
  24.  
  25. var items = {pole1: 'm20m100', pole2: 'm20m100', pole3: 'm20m100', pole4: 'm20m100' , pole5: 'm20m100',pole6: 'm20m100' , pole_email: 'email', pole_email2: 'email', pole_niepuste1: 'niepuste' , pole_niepuste2: 'niepuste' , pole_niepuste3: 'niepuste', pole_niepuste4: 'niepuste' , pole_niepuste5: 'niepuste' , pole_liczbacalkowita1: 'liczbacalkowita', pole_liczbacalkowita2: 'liczbacalkowita', pole_liczbacalkowita3: 'liczbacalkowita', polemax: 'm20m4000' }
  26.  
  27.  
  28.  
  29. for(i=0;i<f.elements.length;i++){
  30.  
  31. E=f.elements[i];
  32.  
  33.  
  34.  
  35. //alert (E.getAttribute('id'));
  36.  
  37. if(rodz=this.rodzajePol[items[E.getAttribute('id')]])
  38.  
  39. if(!rodz[0].test(E.value)){
  40. E.focus();
  41.  
  42. E.select();
  43.  
  44.  
  45. document.getElementById("error").style.display = "block";
  46.  
  47. document.getElementById("error").innerHTML=(E.getAttribute('komunikat')||rodz[1]);
  48.  
  49.  
  50.  
  51. return false;
  52. }
  53. }
  54.  
  55.  
  56.  
  57. return true;
  58. }
  59.  
  60.  



i teraz jak zastosuje id="pole1" to używając w tym polu właśnie entera funkcja pokazuje błąd pomimo iż znaków jwst wiecej niż nakazuje wyrażenie regularne
wookieb
A ja ci mówię, że wyrażeniem regularnym takich rzeczy się nie sprawdza. Podałem ci odpowiednią właściwość do sprawdzenia.
zegarek84
skoro woli tak to dlaczego nie - może chce w ramach ćwiczeń??
Cytat(grzegorz_g @ 9.11.2009, 19:41:17 ) *
mam oto taki kod do sprawdzania ilości znaków w textarea ale w momencie użycia entera kod źle liczy ilość znaków ...
pokazuje błąd pomimo iż jest więcej znaków niż 20

brakuje modyfikatora s lub wyrażenie regularne powinieneś zapisać inaczej bo teraz kropka nie oznacza entera - poczytaj o modyfikatorach - większość jest tych samych w js:
Pattern Modifiers
przejrzyj kilka kursów z wyrażeniami pod js np.: http://www.doman.art.pl/kursjs/kurs/regular.html - dosyć dobry choć nie wszystko opisane winksmiley.jpg

wookieb
Mistrzu. A masz ty modyfikator s do regexp w javascript? Sprawdzałem nie ma.
zegarek84
Sensei - się czepaiasz - napisałem, że jest większość a nie miałem czasu sprawdzić - ale napisałem też "...lub wyrażenie regularne powinieneś zapisać inaczej..."

Włala:
[JAVASCRIPT] pobierz, plaintext
  1. $napis="tt ytr yre yer\r\ny fy fyu ftu fy fyu fyu";
  2. $reg=/^[\s\S]{20,100}$/;
  3. ($reg.test($napis))?alert('dopasowane'):alert('nieeeeee');
[JAVASCRIPT] pobierz, plaintext

O'sensei - ja tylko wskazywać droge
wookieb
Shogunie zacna twą rada. Chodziło mi o to że podajesz modyfikatory do różnych języków. Drugie to powtarzam że w ten sposób się to nie sprawdza. Jak chcesz pół kromki chleba krojonego to nie bierzesz piły machanicznej, aczkolwiek przyznam że nóż ktoś się czegoś nauczy smile.gif
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.