Üdv!
Egy formon szeretném maszkolni az input adatokat, ahogy itt is van:
http://digitalbush.com/projects/masked-input-plugin/
Ezt hogy tudom Drupal-ba tenni, ide pl.:
<?php $form['first_data'] = array( '#type' => 'textfield', '#title' => t('First Data'), '#description' => t('Format: 99-9999999'), ); ?>
A drupal_add_js() fv. kellene használnom, de hogyan?
Vagy van más, egyszerűbb megoldás?
Drupal verzió:
Fórum:
Jó az a drupal_add_js() is szerintem.
http://www.drupaldeveloper.es/en/how-add-javascript-or-jquery-drupal-7
Vagy így:
- A modulod info fájl-jában hozzáadod a 'jquery.maskedinput.js' fájl-t.
- Ugyanitt egy saját javascript fájlt is hozzáadsz.
- És a saját javascript fájlban, ráaggatod az input mezőidre a javascript-et
- cache törlés
müx
köszönöm, működik! :)
JS
Bocsi, hogy JS-es a kérdés. A JS-be nem mélyedtem el még annyira. :)
Szóval lehet azt modosítani a .js-ben hogy a maszkolás ne csak fix karakterszám legyen?
Pl.:
A fenti példa esetén 8 karaktert vár a maskinput. Se többet, se kevesebbet. Ilyen is kellene nekem pl.: mask("99/99/9999*")
Azaz a 8 számkarakter után bármennyi karakter állhat még.
Ez megoldható? Mit kellene a JS-ben módosítani?
Szerintem a szkript
karakterenként vizsgálja a szöveget, és nem egy lépésben illeszt rá egy reguláris kifejezést (a teljes mask-ot). Emiatt, könnyen lehet hogy a 'bármennyi karakter' nem adható meg a mask-ban.
Viszont van '?' opciója viszont, így minden amit a '?' után raksz a mask-ba az opcionális. A dokumentációból:
Hátha ez is elég.
A demo alapján megy
ha meg tudod mondani az össz, vagyi maximális karakterszámot, pl. a dátum után max. 10 karaktert akarsz beengedni, akkor így adhatod meg
Ez jó így, ha korlátozod a bevihető karakterek számát a mezőn (a fenti példában a maxlength 20 karakter).
ez is
igen, ez is működik. köszönöm.
masked input
Üdv!
Nem működik a maszkolás. :(
Az .info fájlban bent van a scripts bejegyzés (jquery.maskedinput.js):
maskedinput.js:
A form:
Az adott formon, ha megnézem az oldal forrását, akkor ott van a két js, az útvonaluk is jó. A forrásban ott van a id="edit-mobile-phone" azonosító. De mégsem maszkol. :o
Ez mitől lehet? Valamit kihagytam?
Javascript consol-on nézegesd
A firebug-ban (is) van javascript console, ahol tudsz ilyen vagy ehhez hasonló jQuery parancsokat futtatni:
$("#edit-mobile-phone").mask("+ ?99999999999999999999");
Mivel már betöltődtek a maskedinput js fájlai (ahogy írod), én a fenti parancsot módosítgatnám a console-on, hátha nem jó.
fb console
A FB console ezt írja:
Nem egészen értem, mert ha az eredeti oldalon a "Demo" fülön ugyanezt beírom, akkor ott működik a maszkolás.
jquery.js
Úgy tűnik korábban a "jquery.js" is ott volt - ez kell hozzá -, de most ki lett szedve valamiért és nem néztem ezt.
A lényeg, hogy működik. Pontosítom a működő kódot:
Az .info fájlban:
A jquery.maskedinput.js itt található.
A jquery-2.0.3 itt található.
A maskedinput.js (ez tartalmazza a saját maszkolásunk jquery kódját):
Köszönöm a segítséget!
érdekesség
Egy érdekes dolgot azért találtam.
A corporateclean smink is használ jquery-t a slide képek animálására (banner slideshow).
Ha a fenti kód szerint használom, akkor nem működik a smink slidwshow-ja (csak főoldalon van), de csak akkor, ha be van jelentkezve a user. Ha nincs bejelentkezve a user, akkor megy a slideshow. :o
Próbáltam a modulom jquery-jét 'attached'-be tenni:
Ebben az esetben működik a smink slideshow-ja, de a maszkolás nem. :(
Ezt az apró hibát ki lehetne valahogy küszöbölni?
(Próbáltam másik jquery verzióval is (pl. 1.10.2), de ugyanaz.)
admin
De csak akkor nem megy, ha admin-ként vagyok bejelentkezve.
Ez lehet hogy normális is...(?) :)
Azért az érdekel, hogy az 'attached'-el miért nem működik a maszkolás, csak akkor megy ha a .info fájlba teszem a jquery.js-t.
masked_input modul
Csak az archivum kedvéért: masked_input modul.
* masked_input modul telepítés (alapbeállítás jó),
* Fájl másolása ide: sites/all/libraries/maskedinput/jquery.maskedinput-1.3.js
* A saját kódban pedig használni, pl.: