Is het ook mogelijk om in het geval van een error de betreffende regel van een class="error" of iets dergelijks te voorzien? Ik zou namelijk (onder andere) graag een rood randje om de velden heenzetten in het geval van een error.
Voor zover ik kan achterhalen helaas niet. Er staat wel een <span class="error"> achter het formfield, maar het formfield zelf en/of de omliggende TR/TD is niet te stylen. Ook via $form->setmask() is hier voor zover ik kan zien geen oplossing voor ingebouwd.
Komt hier misschien nog een oplossing voor? Het liefst instelbaar via setMask of iets dergelijks, maar eventueel standaard in het form element is ook prima:
<input type="text" class="error">
Ik kan me zo voorstellen dat dit iets is waar zeer veel mensen wat aan zullen hebben.
Changed at 07 January 09 / 11:37
Na enig stoeien heb ik een mogelijke oplossing weten te maken. Het idee is om in het masker de speciale variabele %error_style% toe te voegen aan het HTML-element waaraan men de class="error" wil toevoegen. De betreffende functie zorgt er vervolgens zelf voor dat deze op de juiste manier wordt ingevoegd, zodat er geen dubbele class="..." in een bepaald element voorkomen.
Ik snap wel waar je heen wilt, maar weet niet of dit wel zo gewenst is.
Wat nu als ik een heel andere mask gebruik. waar in meer elementen het class attribute aanwezig is? dan wordt overal de class error aan toegevoegd.
Voor als nog zie ik het niet als geschikte oplossing om mee te leveren.
Het is te specifiek voor jou toepassing. Je kunt het natuurlijk wel in een eigen extend gebruiken.
Changed at 07 January 09 / 11:44
Het is juist toepasbaar in elk soort mask, omdat het dus analyseert of er al een class="" in het betreffende element aanwezig is. Kijk maar eens naar het verschil tussen voorbeeld 1 en voorbeeld 2.
Is het wellicht mogelijk om deze techniek ook in te zetten in het input field zelf??? Nu werkt het namelijk alleen op de omliggende mask, het formfield zelf krijgt die class="error" niet mee.
Changed at 25 August 09 / 13:07
Ik ben het met je eens. Echter, heel af en toe gebruik ik een lege mask; om bijvoorbeeld een postcode en woonplaats op dezelfde regel te plaatsen.
In het geval van een error in één van beide fields, zouden ze beide een rode rand krijgen. Dit is natuurlijk niet de bedoeling.
NB: Het is bovendien makkelijker inzetbaar voor de mensen die niet diep in de documentatie van FormHandler duiken om te achterhalen hoe ze met %error_style% om moeten gaan. Implementatie op deze wijze zou immers altijd correct werken.
Tja, ik ben het ook met jou eens maar is het dan niet beter het allen op het input field te doen?
wordt anders wel een beetje erg dubbel op, aan de andere kant kan het ook niet echt kwaad, want de %error_style% kunje weg laten.
Voor maximale ondersteuning zou de dubbel-op-variant denk ik de beste optie zijn.
De inline variant (dus in het input field) zal dan standaard aanwezig zijn en derhalve de meest gebruikte optie gaan worden. Voor extra functionaliteit van FormHandler kan diegene die daar behoefte aan heeft, zijn mask nog eens uitbreiden met %error_style%. In sommige ontwerpen is het fijner om bijvoorbeeld een rood randje om het hele kader te plaatsen, i.p.v. uitsluitend om het input field.
Dat valt dan alleen te bewerkstelligen in de dubbele variant. (die dan eigenlijk zo dubbel nog niet is, zolang je de %error_style% weglaat)
Ik merk op dat ontzettend veel gebruikers standaard al een speciale class aanmaken, afhankelijk van de naam van het input-field. Dat wil zeggen:
<input type="text" class="text />
etcetera. Dit is vanzelfsprekend om het gebrek aan ondersteuning in CSS van bijv. input[type=text] op te vangen in de iets oudere browsers. IE6 ondersteunt dit niet, maar ook IE7 zonder doctype niet. Kort samengevat is het een goed iets om elk form element een extra class mee te geven.
Gezien de mogelijkheid om 'error' dynamisch in te voegen, is het wellicht ook een idee om op diezelfde manier 'text', 'radio', 'checkbox', etc. toe te voegen aan de verschillende form elements????
Is er een mogelijkheid voor mijzelf om dit te standaardiseren? Binnenkort moet ik namelijk een formulier maken met ongeveer 200 velden; en om nou 200 keer 'class="text"' aan de php-code toe te voegen is ook weer zo wat...
In IE6 en lager, maar ook in IE7 in het geval van een ontbrekende DOCTYPE, ziet de parser geen verschil in al die verschillende input-elementen. Het is in de meeste gevallen wel wenselijk om dergelijke elementen afzonderlijk te kunnen stijlen. Bijvoorbeeld: een checkbox hoeft immers in de meeste gevallen geen border, waar een text-field dit vaak wel heeft.
Omdat dit niet werkt voor de oudere browsers, zul je dus je elementen een extra type-class moeten geven:
Voor text-fields is het inderdaad overbodig, je hebt gelijk.
Echter, ik vind het belangrijk om opmaak van php-code te scheiden, vandaar dat ik zoveel mogelijk opmaak-gerelateerde dingen standaardiseer. En zolang IE6 nog in omloop is, MOET deze class-toevoeging gehandhaafd worden.
Omdat dit toch wel de meest gebruike methode is ten aanzien van het ondersteunen van oude browsers (zelfs geadviseerd door W3C), leek me dit wel een prima optie om aan FormHandler toe te voegen. Inderdaad dan alleen voor de checkboxes, radiobuttons en de verschillende buttons.
Grote en logge organisaties hebben zich te houden aan afspraken van hogerhand; even snel een browser of windows-versie updaten zit er meestal niet in. XP en IE6 zullen bij die doelgroep derhalve nog wel een aantal jaren de standaard blijven.
In FH/fields/class.CheckBox.php op regel 227 is de label-tag voorzien class="noStyle". Deze class ontbreekt echter in FH/fields/class.RadioButton.php op regel 157, die in principe op eenzelfde wijze zou moeten werken. Is het mogelijk deze class alsnog aan de betreffende label-tag toe te voegen?
Changed at 02 October 10 / 17:14
Thanks! Ik heb nog wat verbeteringen weten te realiseren. In de bestaande situatie zou 'class=test' resulteren in 'class=error class=test'. Omdat dat niet W3C is, bleef me dat toch dwarszitten. Het resultaat is als volgt: (gebaseerd op de versie die je zojuist online hebt gezet)