Webform textarea mező ellenőrzése + karakterszámlásás

Szabó Gábor képe

Sziasztok!

Egy olyan űrlapot kéne létrehoznom, ahol az egyes mezőkbe meghatározott karakterszámot lehet bevinni.
Ez meg is oldható a webform validation modullal, aminek segítségével be lehet állítani a maximálisan elfogadható karakterszámot. Ha többet visz be a kitöltő, akkor hibaüzenet kap. Ez rendben is van.

Viszont nem látja, hogy éppen hány karakternél tart, így ha hibaüzenet kap, nem tudja, hogy 1-2, vagy 10-20 karaktert kell kitörölnie.
Ezért hogy felhasználóbarátabb legyen a dolog, kéne a beviteli mezőknél (ezek textarea típusúak) jelezni, hogy éppen hány karakternél tart a bevitelnél.

Erre nem találtam modult.
Van viszont egy webform html textarea modul, illetve az abból származó komponens, aminél be tudom állítani például a CKEditort (amit sima textarea komponensnél nem).
A CKEditornál pedig be lehet állítani, hogy alul írja ki a karakterszámokat.

A baj csak az, hogy ezt a webform html textarea típusú komponenst nem látja a webform validation, tehát nem tudom rá beállítani a max engedélyezett karakterszámot.

Így elakadtam.
Valaki találkozott már ezzel az igénnyel?
Van-e rá valami modul, vagy programozni kell? (Gondoltam arra is hogy rules modullal ellenőrzöm, de nem sikerült beállítani.)

Modulok:
webform (7.x-3.18)
webform validation (7.x-1.1)
webform html textarea (7.x-1.4)

Bármi érdekel, ami a megoldáshoz vezet.

Üdvözlettel:
Szabó Gábor

Melyik modulhoz, modulokhoz kapcsolódik a téma?: 
Drupal verzió: 
Sk8erPeter képe

Nem ismerek külön ilyen modult, de nagyon könnyű írni ilyet jQuery-ben. Most kikapcsolódásként gyorsan készítettem neked egy példát:

http://jsfiddle.net/Sk8erPeter/xRj8f/

Ez kijelzi a bepötyögött karakterek, valamint a még hátralévők számát, ezenkívül a kívánt méretre vágja a bepötyögött szöveget, annál többet nem enged begépelni (megjegyzem, ez egyéni döntés kérdése, hogy levágjuk-e a plusz karaktereket, vagy csak jelezzük, hogy az már sok lesz, mert idegesítő is lehet a levágás, tehát ez csak szemléltető példa). Itt 50-re limitáltam a maximum karakterszámot.
Ha ismered a JavaScript behaviors-t:
http://drupal.org/update/modules/6/7#local_settings_behaviors
akkor könnyű dolgod lesz, gyorsan be tudod építeni egy saját modulba vagy sminkbe is.
Ezen lehetne még szépíteni, akár jQuery plugint is tudnál belőle készíteni (a karakterszámláló HTML-elemeket akár JS-ből is hozzá lehetne adni, ha nagyon a pluginre akarjuk bízni a dolgokat).

drupal_add_js() függvénnyel a Drupal.settings objektumba is nagyon könnyen belepakolhatod a maximális karakterszámot mondjuk egy modullal vagy sminkbeli PHP-kóddal, így azt JS-kódból el tudod érni.

1
0
Sk8erPeter képe

Programozni sem kell, ha egyelőre nem kell neked a visszaszámlálás:

http://drupal.org/project/webform_validation

+
Clientside Validation
http://drupal.org/project/clientside_validation

Szabály létrehozása:

Webform Validation + Clientside Validation

Submitoláskor jön a kliensoldali (!!) validálás eredménye (nem engedi submitolni a formot):

Webform Validation + Clientside Validation

1
0
Szabó Gábor képe

Köszönöm a válaszaidat.
Ezzel a clientside validation-nel már felhasználóbarátabb a dolog.
Az előző válaszban leírt javascript nagyon jó, ez lenne a legjobb megoldás, de ezek szerint még nem készült ilyen kiegészítés a webformhoz.

0
0
Sk8erPeter képe

Szívesen, majd ha lesz egy kis időm, lehet, hogy készítek egy ilyen minimodult, amit erre is lehet alkalmazni. Ha viszont valamennyire megy a modulfejlesztés, akkor ezt Te is meg tudod csinálni a másik kommentben említett plugin beizzításával.

0
0
Sk8erPeter képe

Készítettem belőle jQuery-plugint, hátha jól jön valakinek (még ezen is lehet szépíteni, fogok is, de most hirtelen belelkesedve ez lett az eredmény):
http://jsfiddle.net/Sk8erPeter/xRj8f/3/

0
0