hi ho,
mehrere fragen zu formBuilder
1. ich würde gerne statt des standard-submit-buttons eines mit formbuilder gebauten formulares eine bilddatei benutzen. also so z. b.:
ist das möglich? wo kann ich das ganze einstellen?
2. ich kann ja den input-feldern einen value vordefinieren:
value_Firma='Bitte geben Sie Ihre Firma ein'
enthält der name jedoch ein leerzeichen, so weiss ich nicht wie ich den value vordefinieren kann. unter- bzw. bindestrich funktioniert nicht, leerzeichen erzeugt einen smarty error. wie spreche ich diese felder an?
3. ähnliches bei Emailfeld "Von (Email)"-feld. ich weiss nicht, wie ich dort den value setzen kann, da ich das feld nicht mit z. b.
value_Email='Bitte geben Sie Ihre E-Mail ein'
ansprechen kann.
4. wie kann ich denn jedem iput type="text" und jeder textarea dieses js anhängen?
onfocus="if(this.value==this.defaultValue) this.value='';" onblur="if(this.value=='') this.value=this.defaultValue;"
oder hat jemand eine schicke jquery variante parat ;o)
wenn hier jemand licht ins formBuilder-dunkel bringen könnte wäre grandios!
dank & gruss
anti
[GELÖST] FormBuilder: image statt button, value setzen, focus / blur
- antiheld2000
- Forum Members
- Posts: 236
- Joined: Thu Jan 31, 2008 9:23 am
[GELÖST] FormBuilder: image statt button, value setzen, focus / blur
Last edited by antiheld2000 on Thu Feb 21, 2008 8:03 pm, edited 1 time in total.
Re: FormBuilder -> image statt button, value setzen, focus / blur
Also ehrlich gesagt hab ich den Formbuilder immer gemieden und lieber ein entsprechendes Modul geschrieben, dass das macht, was ich will. Es ist schwierig ein Fombuilder-Modul zu entwickeln, das dem Benutzer volle Flexibilität bei der Gestaltung seiner Formulare lässt und ihm gleichzeitig Arbeit abnimmt. Ich glaube der Bedarf an einem zufriedenstellenden Formulargenerator ist bei jedem CMS sehr hoch. Allein für Joomla fallen mir gleich fünf unterschiedliche Module ein... die ich allesamt zum Kotzen fand. Ich versuche seit einiger Zeit ebenfalls ein Formular-Modul für CMSms zu schreiben und verstehe jetzt, dass es besonders bei solchen Modulen zu äußerst schwierig zu bewältigen Problemen kommt.
Demzufolge hab ich auch wenig Erfahrung mit dem FormBuilder, aber...
zu 1.:
Oder Du machst folgendes:
Der Formbuilder gibt dem Submitbutton die CSS-Klasse fbsubmit. Damit kannst Du den Button auch via CSS formatieren, indem Du einfach ein Hintergrundbild dafür definierst.
zu 2. und 3.:
Oder meinst Du etwas anderes?
Unter Value verstehe ich den Wert des Feldes. Also das was man eingeben kann.
Wo kann man soetwas wie "value_Firma='Bitte geben Sie Ihre Firma ein' " angeben?
Etwa im Template?
Bist Du Dir sicher, dass der Name für das Feld, den Du beim Erstellen des Feldes angeben kannst, auch der Name ist, den der Formbuilder im Template als Variable verwendet? Angesichts der Tatsache, dass der Name (also in diesem Falle das des Feldes) auch Sonderzeichen enthalten kann, kann ich mir gut vorstellen, dass der Formbuilder den Namen für die Templatevariablen in irgendeiner Form ändert. Wie z.B. beim automatischen Erstellen von Seiten-Aliases. Möglicherweise macht er ja aus Ä einfach nur A oder AE usw. (Du verstehst schon was ich meine, oder?)
Schau mal in den HTML-Quellcode bei der Ausgabe Deines Formulars im Browser. Was genau steht da für ein Wert bei dem Attribut "name"? Oder noch einfacher: Lass Dir die Templatevariablen mit Hilfe des Smarty-Tags {get_template_vars} in Deinem Formulartemplate auf der Seite ausgeben. Und dann schau Dir mal die Variablennamen der Felder an, in denen Du Leerzeichen, Sonderzeichen oder Umlaute verwendest.
Auf Deutsch:
Wenn Du z.B. für ein Feld eine CSS-Klasse definierst, macht der Formbuilder nur class="CSS-Klasse" daraus.
Wenn Du der CSS-Klasse aber einen Namen und ein Anführungszeichen gibst, macht der Fombuilder class="CSS-Klasse"" daraus.
(Was im Browser zu Validitätsproblemen führt.)
Du ahnst es schon.
Gib doch mal für die CSS-Klasse folgendes an:
Name der CSS-Klasse" "onfocus="if(this.value==this.defaultValue) this.value='';" onblur="if(this.value=='') this.value=this.defaultValue;
Wichtig: Das letzte Anführungszeichen weglassen.
Ist nicht optimal die Lösung, aber die Erste, die mir dazu einfällt.
Demzufolge hab ich auch wenig Erfahrung mit dem FormBuilder, aber...
zu 1.:
Soweit ich weiß, wird der Submitbutton automatisch generiert. Da kommst Du wohl nur über den PHP-Quellcode ran.antiheld2000 wrote:
1. ich würde gerne statt des standard-submit-buttons eines mit formbuilder gebauten formulares eine bilddatei benutzen. also so z. b.:
ist das möglich? wo kann ich das ganze einstellen?
Oder Du machst folgendes:
Der Formbuilder gibt dem Submitbutton die CSS-Klasse fbsubmit. Damit kannst Du den Button auch via CSS formatieren, indem Du einfach ein Hintergrundbild dafür definierst.
zu 2. und 3.:
Ähm... Kann man das? Find ich grad nicht.antiheld2000 wrote:
2. ich kann ja den input-feldern einen value vordefinieren:
value_Firma='Bitte geben Sie Ihre Firma ein'
Oder meinst Du etwas anderes?
Unter Value verstehe ich den Wert des Feldes. Also das was man eingeben kann.
Wo kann man soetwas wie "value_Firma='Bitte geben Sie Ihre Firma ein' " angeben?
Etwa im Template?
Bist Du Dir sicher, dass der Name für das Feld, den Du beim Erstellen des Feldes angeben kannst, auch der Name ist, den der Formbuilder im Template als Variable verwendet? Angesichts der Tatsache, dass der Name (also in diesem Falle das des Feldes) auch Sonderzeichen enthalten kann, kann ich mir gut vorstellen, dass der Formbuilder den Namen für die Templatevariablen in irgendeiner Form ändert. Wie z.B. beim automatischen Erstellen von Seiten-Aliases. Möglicherweise macht er ja aus Ä einfach nur A oder AE usw. (Du verstehst schon was ich meine, oder?)
Schau mal in den HTML-Quellcode bei der Ausgabe Deines Formulars im Browser. Was genau steht da für ein Wert bei dem Attribut "name"? Oder noch einfacher: Lass Dir die Templatevariablen mit Hilfe des Smarty-Tags {get_template_vars} in Deinem Formulartemplate auf der Seite ausgeben. Und dann schau Dir mal die Variablennamen der Felder an, in denen Du Leerzeichen, Sonderzeichen oder Umlaute verwendest.
Ich weiß nicht ob und wie man da etwas einstellen kann, aber ich habe den Core von CMSms mal "ausgetrickst", weil ich beim Programmieren eines Moduls Probleme hatte, mit der Funktion CreateFormStart(...) dem Formular irgendein bestimmtes Attribut zuzuweisen, weil die Entwickler bei dieser Funktion wohl nicht an dieses Attribut gedacht hatten. Ohne jetzt am Core rumzufummeln und die Funktion anzupassen, habe ich einfach für ein anderes Attribut folgendes an die Funktion übergeben: Wert" id="... (wobei ID jetzt mal das von mir gewünschte zusätzliche Attribut sein soll)antiheld2000 wrote:
4. wie kann ich denn jedem input type="text" und jeder textarea dieses js anhängen?
onfocus="if(this.value==this.defaultValue) this.value='';" onblur="if(this.value=='') this.value=this.defaultValue;"
oder hat jemand eine schicke jquery variante parat ;o)
Auf Deutsch:
Wenn Du z.B. für ein Feld eine CSS-Klasse definierst, macht der Formbuilder nur class="CSS-Klasse" daraus.
Wenn Du der CSS-Klasse aber einen Namen und ein Anführungszeichen gibst, macht der Fombuilder class="CSS-Klasse"" daraus.
(Was im Browser zu Validitätsproblemen führt.)
Du ahnst es schon.
Gib doch mal für die CSS-Klasse folgendes an:
Name der CSS-Klasse" "onfocus="if(this.value==this.defaultValue) this.value='';" onblur="if(this.value=='') this.value=this.defaultValue;
Wichtig: Das letzte Anführungszeichen weglassen.
Ist nicht optimal die Lösung, aber die Erste, die mir dazu einfällt.
- antiheld2000
- Forum Members
- Posts: 236
- Joined: Thu Jan 31, 2008 9:23 am
Re: FormBuilder -> image statt button, value setzen, focus / blur
ich beschäftige mich ja erst seit zwei wochen mit dem cms, somit kenn ich mich noch nicht so gut damit aus, ergo schreibe ich mir noch keine eigenen module. aber was noch nicht ist, kann ja noch werden.
1.
2. und 3.
{
cms_module
module='FormBuilder'
form='kontaktformular'
value_Name='Bitte geben Sie Ihren Namen ein'
value_Firma='Bitte geben Sie Ihre Firma ein'
value_Email='Bitte geben Sie Ihre E-Mailadresse ein'
value_Telefon='Bitte geben Sie Ihre Telefonnummer ein'
value_Anliegen='Wie können wir Ihnen weiterhelfen'
}
wobei für das vordefinierte feld email es nicht in dieser weise funktioniert
4.
die css-klasse wird uneleganterweise einem div zugewiesen, welches um das inputelement herumgelegt wird.
sehr schöne workaround ansätze, aber leider nicht die richtigen lösungen dabei.
dank und gruss
anti
1.
schöner gedankenanstoss. weiss nicht, wie cross browser konform das ganze ist, ist aber vorerst ein sehr guter workaroundNaN wrote: Der Formbuilder gibt dem Submitbutton die CSS-Klasse fbsubmit. Damit kannst Du den Button auch via CSS formatieren, indem Du einfach ein Hintergrundbild dafür definierst.
2. und 3.
jau, das kann man. im auf in der inhaltsseite. z.b.NaN wrote: Ähm... Kann man das? Find ich grad nicht.
{
cms_module
module='FormBuilder'
form='kontaktformular'
value_Name='Bitte geben Sie Ihren Namen ein'
value_Firma='Bitte geben Sie Ihre Firma ein'
value_Email='Bitte geben Sie Ihre E-Mailadresse ein'
value_Telefon='Bitte geben Sie Ihre Telefonnummer ein'
value_Anliegen='Wie können wir Ihnen weiterhelfen'
}
wobei für das vordefinierte feld email es nicht in dieser weise funktioniert

4.
schade, geht nicht, aer auch ein spitzenansatzNaN wrote:Ist nicht optimal die Lösung, aber die Erste, die mir dazu einfällt.

sehr schöne workaround ansätze, aber leider nicht die richtigen lösungen dabei.
dank und gruss
anti
Re: FormBuilder -> image statt button, value setzen, focus / blur
Nur zuantiheld2000 wrote:
ich beschäftige mich ja erst seit zwei wochen mit dem cms, somit kenn ich mich noch nicht so gut damit aus, ergo schreibe ich mir noch keine eigenen module. aber was noch nicht ist, kann ja noch werden.

Die CSS-Eigenschaft "background-image" gehört schon seit CSS 1.0 dazu und wird von allen derzeit gängigen Browsern interpretiert.antiheld2000 wrote:
schöner gedankenanstoss. weiss nicht, wie cross browser konform das ganze ist, ist aber vorerst ein sehr guter workaround
Nach meiner Erfahrung machen bei der Formatierung von Input-Elementen nur die OS-implementierten Browser (IE/Safari) noch Mätzchen. Beisst sich glaub ich mit der GUI des OS.
Aha. Als Parameter also. Die Namen der Parameter entsprechen den Namen der Variablen im PHP-Script (bzw. den Indizes des Arrays $params. Daher dürfen sie keine Umlaute, Leer- oder Sonderzeichen enthalten. Deshalb glaube ich, dass ich mit meiner Theorie, dass der Formbuilder diese Namen für sein Script umbenennt, nicht so falsch liege. D.h. Du kannst also nicht davon ausgehen, dass Du die Namen 1:1 als Parameter verwenden kannst.antiheld2000 wrote: jau, das kann man. im auf in der inhaltsseite. z.b.
{
cms_module
module='FormBuilder'
form='kontaktformular'
value_Name='Bitte geben Sie Ihren Namen ein'
value_Firma='Bitte geben Sie Ihre Firma ein'
value_Email='Bitte geben Sie Ihre E-Mailadresse ein'
value_Telefon='Bitte geben Sie Ihre Telefonnummer ein'
value_Anliegen='Wie können wir Ihnen weiterhelfen'
}
wobei für das vordefinierte feld email es nicht in dieser weise funktioniert
Schau mal in Deiner Datenbank in die Tabellen des Formbuilders. Eventuell gibt es dort Spalten für den "realen Namen" und den "Variablen-Namen".
Die Umwandlung könnte natürlich auch erst im Script stattfinden. Da muss ich nochmal schauen.
Falls es nur um Leerzeichen geht, lass die doch einfach mal weg und schreib alles direkt hintereinander. (also value_bittenameneingeben=...)
Eventuell könnte es auch helfen anstelle der Leerzeichen %20 zu schreiben.
Hm, da muss ich den Quellcode nochmal durchforsten.antiheld2000 wrote:
...die css-klasse wird uneleganterweise einem div zugewiesen, welches um das inputelement herumgelegt wird.
Last edited by NaN on Wed Feb 20, 2008 7:52 pm, edited 1 time in total.
- antiheld2000
- Forum Members
- Posts: 236
- Joined: Thu Jan 31, 2008 9:23 am
Re: FormBuilder -> image statt button, value setzen, focus / blur
So, ich fasse für die Nachwelt noch einmal alle Workarounds zu meinen Fragen zusammen:
zu 1.:
Button per CSS ein Hintergrundbild zuweisen (bekommt sich mit Antwort zu 4. in die Haare) etc. Beispielcode:
zu 2. und 3.:
Einfach die Felder so benennen, dass Sie weder Sonderzeichen noch Leerzeichen beinhalten. Sollte ja in den meisten Fällen machbar sein.
zu 4.:
Eine jQuery Lösung, noch nicht voll ausgearbeitet (z. B. Submit Button Beschriftung verschwindet n focus), aber schonmal ein guter Ansatz:
Aufgrund dieser schönen Workarounds setz ich das Topic mal auf gelöst. Feel free to mach weiter mit the Thema.
zu 1.:
Button per CSS ein Hintergrundbild zuweisen (bekommt sich mit Antwort zu 4. in die Haare) etc. Beispielcode:
Code: Select all
.fbsubmit {
background:transparent url(images/back_btn.png) no-repeat; /* Bilddatei */
border:none; /* rahmen ausblenden */
width:110px; /* bildhoehe */
height:20px; /* bildbreite */
color:#fff; /* schrftfrabe */
}
Einfach die Felder so benennen, dass Sie weder Sonderzeichen noch Leerzeichen beinhalten. Sollte ja in den meisten Fällen machbar sein.
zu 4.:
Eine jQuery Lösung, noch nicht voll ausgearbeitet (z. B. Submit Button Beschriftung verschwindet n focus), aber schonmal ein guter Ansatz:
Code: Select all
$(document).ready(function(){
$('input, textarea').bind('focus', function() {
oldValue = $(this).val();
$(this).val('');
});
$('input, textarea').bind('blur', function() {
newValue = $(this).val();
if (newValue == '') {
$(this).val(oldValue);
}
});
});