ugrás a tartalomhoz

Az Adobe Spry (AS) és a regexp

aeternum · 2011. Szep. 26. (H), 17.58
Van 4 input mezőm, amit AS-jel szeretnék ellenőrizni.

A mezők mindegyike két állapotú: vagy értéket tartalmaz, vagy egyetlen olyan karaktert (most a '/'-jel), ami azt jelzi, hogy abba a mezőbe nem kerül adat.
Az értékek a valós számok halmazából kerülnek ki. Bár, nem teljesen, mert bizonyos tartományba esnek +/-100,00 közé.

Órák óta túrom a netet és a doksikat a megfelelő és MUKODO regexp kifejezésért.
Jelenleg itt tartok: ^([ -]?[0-9]{2}[,][0-9])$|^[/]?$

És a validálás csak félig sem működik: beengedi írni és bármit elfogad jónak.

Spry változó:
  1. var hofok = new Spry.Widget.ValidationTextField(  
  2.                 "hofok",  
  3.                 "custom",  
  4.                 {isRequired:true,  
  5.                  characterMasking: '^([ -]?[0-9]{2}[,][0-9])$|^[/]?$',  
  6.                  useCharacterMasking:"true",   
  7.                  hint:"00,0",   
  8.                  validateOn:["change"],   
  9.                  additionalError: 'um_msg'});  
Ha ehhez még a pattern-t is megadom, akkor viszont nincs validálás, semmit nem enged beírni.

Mit rontok el???

aet
 
1

A / jel elé nem kell \-t

Hidvégi Gábor · 2011. Szep. 26. (H), 18.31
A / jel elé nem kell \-t tenni?
2

lehet hogy nem szövegként

Karvaly84 · 2011. Szep. 26. (H), 19.46
lehet hogy nem szövegként kéne megadni a regexet.
3

A javasolt

aeternum · 2011. Szep. 26. (H), 20.53
változtatások
^([ -]?[0-9]{2}[,][0-9])$|^[\/]?$

eredménye az lett, hogy most már félig sem validál. A megelőző állapotban legalább a mező háttérszíne és a hibaüzenetek kiíródtak. most már azok sem történnek meg.

Pedig piszokul reméltem, hogy nem kell 3 különböző oldalt legyártanom - 4 input egy submit, 2-2 input 1-1 submit, 4 input négy submit- és nem kell vizsgálnom a bejelentkezés tipusát, (teljes adatbevitel, részleges adatbevitel , egyedi adatbevitel) ami alapján dinamikusan töltöm be a szükséges űrlapokat vagy az azokat tartalmazó html állományokat.

A fura az, hogy ezt egy ősöreg JSDHTML frankón megcsinálta ezzel a regexppel:
  1. /* ellenorzi, hogy az input mezok szamok-e vagy per, ha igen, akkor az input mezo szerinti valtozot igazra alltja*/   
  2.   
  3. function adat_ellenorzes(honnan, adat)   
  4.   {   
  5.     divId = 'mero_hiba';  // hova irjon hibauzenetet  
  6.     maszk = /\d|[/]/ ;    // vagy szam vagy per  
  7.   
  8.     if (!maszk.exec(adat))   
  9.      { kiir(divId, adat, ' nem felel meg!');   
  10.        document.getElementsByTagName(honnan).value.select;} //ugorjon a hibas mezore (persze nem ugrik! :)  
  11.      else   
  12.      { switch (honnan)   
  13.         { case "ph_ho" :  
  14.            kiir(divId, '''');  
  15.            break;  
  16.   
  17.           case "ph_ph" :  
  18.            kiir(divId, '''');  
  19.            break;  
  20.   
  21.           case "cl_sz" :  
  22.            kiir(divId, '''');  
  23.            break;  
  24.   
  25.           case "cl_kk" :  
  26.            kiir(divId, '''');  
  27.            break;  
  28.         } // end switch  
  29.   
  30.      } // endelse  
  31.   } // endfunction adatellenorzes     
Sebaj! jobb is lesz a 3 oldal!
:)))

Legalább gyakorlom a dinamikus oldalbetöltést is!!!
:))))))))))
4

Az ilyen bíbelődésekre régen

Karvaly84 · 2011. Szep. 26. (H), 21.14
Az ilyen bíbelődésekre régen csináltam egy egyszerű oldalt ahol tudok tesztelni. JavaScript-ben működik és hátha segít neked is: http://karvaly.co.cc/regexp/regexp.html, akár le is szedheted a html-t mert minden a html-ben van hogy mobil legyen.
5

Én ezt próbálnám ki, az

Hidvégi Gábor · 2011. Szep. 26. (H), 21.35
Én ezt próbálnám ki, az ominózus sor:
characterMasking: /^([ -]?[0-9]{2}[,][0-9])$|^[\/]?$/,
6

nem megy.. :)

aeternum · 2011. Szep. 26. (H), 22.33
Gábor, az általad javasolt változtatás jó is meg nem is. Az inputot végig írhatom 5 db /-rel, de semmi mást nem enged bevinni. sem szóközt, sem minuszt, sem pedig számértéket.

Karway, ez is egy szép ötlet, csak mégsem segít meghatározni, hogy mi a hiba a kifejezésben. Azért az látszik, hogy abban van a hiba és nem a regexp és a spry összekapcsolódásban.
:)

A turkálás alatt találtam valami regexp debug oldalt is.
megpróbálom újra megtalálni.
:)
7

szerintem írd le milyen

Karvaly84 · 2011. Szep. 26. (H), 22.35
szerintem írd le milyen értéket kel hogy benyeljen a regexp és írunk egyet,lol
8

na asszem megvan.

Karvaly84 · 2011. Szep. 26. (H), 22.44
na asszem megvan. characterMasking helyett regExpFilter. egy forumon láttam.

a link: forums.adobe.com
10

lol

aeternum · 2011. Szep. 26. (H), 23.10
de én akarom megírni! :)

Nos, a regexptester.com szerint ez a jó kifejezés:
^-{0,1}\d{2}[,]{1}\d{1}$|^[\/]{1}
kétjegyű, pozitív vagy negatív tizedestört egy tizedes helyiértékkel vagy egy darab per jel.
A Spray nem nyeli be, csak így: /^-{0,1}\d{2}[,]{1}\d{1}$|^[\/]{1}/, de így is csak a per jelet engedi.

Nézem a filtert.
11

nekem ez jön ki

Karvaly84 · 2011. Szep. 26. (H), 23.23
nekem ez jön ki /^[-]?[\d]{1,2}(?:[,][\d])?$|^\/$/
12

Esetleg egy ilyen?

gabesz666 · 2011. Szep. 27. (K), 14.17
Esetleg egy ilyen?

^-?[0-9]{1,3}(,[0-9]{1,2})?$|^/$
13

Ez is jó, az elején én is ezt

Karvaly84 · 2011. Szep. 27. (K), 14.34
Ez is jó, az elején én is ezt találtam ki nagyjából, de a match így csak azt adja vissza ami a zárójelben van mondjuk a test-hez elég, de ha az egész egyezés kel akkor ki kel zárni, hogy csak a zárójeles részt adja vissza ahhoz meg a "?:" forma kel, ha meg nincs zárójel akkor elfogad 3 jegyű számot is, meg olyat is ahol a tizedes után semmi nincs.
9

Egyébként most engem is

Karvaly84 · 2011. Szep. 26. (H), 22.57
Egyébként most engem is elkezdett érdekelni a dolog, és a Spry.Widget.ValidationTextField.ValidationDescriptors tartalmaz egy gyűjteményt többféle dologra, pl e-mail cím, természetes számok meg ilyesmi, abból puskázz szerintem.