WBCE CMS – Way Better Content Editing.
Du bist nicht angemeldet.
Hallo,
ich komme da bei einer ganz banalen Sache nicht weiter.
Habe erstmals ein Formular erstellt, dazu mpForm 1.3.23 verwendet, das auch wie gewünscht funktioniert, aber sich beim besten Willen bei folgendem Punkt nicht ansehnlich formatieren lässt:
Wenn ich ein neues Feld vom Typ "Ganze Zahl" anlege, kann ich zwar die Länge angeben, das wirkt sich aber nur auf die maximal mögliche Zahl von Ziffern aus, die in das Eingabefeld eingegeben werden können.
Ich würde aber viel lieber die Breite des Eingabefeldes deutlich beschränken, es ist über 400 Pixel breit - wo doch nur ein bis höchstens dreistellige Zahlen eingegeben wertden sollen.
Natürlich habe ich schon unter CSS-Einstellungen in der frontent.css jede Menge vermeintlich passende Zahlen und Pixelwerte verändert, auch Pixelwerte durch Prozentangaben ersetzt. Da tut sich dann auch einiges wie erwartet, nur eben genau diese Eingabefelder werden nicht kleiner.
Kann mir bitte jemand sagen, mit welchem Wert in welcher Zeile denn die Größe dieser Eingabefelder gesteuert wird?
Danke,
dabiener
Offline
Jedes Feld erhält automatisch eine ID (z.B. #field2) und eine Klasse (.mpform_field_integer_number). Darüber sollte sich die Breite via CSS eigentlich justieren lassen.
Je nach verwendetem Template kann es sein, dass in diesem aber Formatanweisungen sind, die die individuell angegbene Feldbreite überschreiben. Bootstrap erzwingt z.B. grundsätzlich width=100%. Du müsstest entweder versuchen, mit !important; in der CSS-Datei die gewünschte Breite durchzusetzen oder versuchen, mittels der Browserkonsole herauszufinden, wo die unerwünschte Formatierung herkommt.
Code allein macht nicht glücklich. Jetzt spenden!
Offline
mittels der Browserkonsole herauszufinden, wo die unerwünschte Formatierung herkommt.
Bombig! Vielen Dank für die wieder mal unglaublich schnelle Hilfe! Denn DAS war der entscheidende Hinweis, mit dem ich quasi fast sofort die Lösung da gefunden habe, wo ich sie selber mangels CSS-Kenntnis eben nicht vermutet hätte. Habe bei der Gelegenheit gleich erstmals diese Browserconsole näher untersucht, bisher konnte ich damit nie was anfangen, das hat sich jetzt nebenbei auch gleich geändert.
Gruß
dabiener
Offline
florian
In dem Zusammenhang möchte ich einen Wunsch äußern (eigentlich für alle Formmodule): Es wäre schön, wenn man den Feldern im BE eine Zeichengrenze mitgeben könnte. So zum Beispield dem Feld "Postleitzahl" Typ Ganze Zahl, 5-stellig für Deitschland oder 11-stellig (mit Bindestrich) für USA.
Die Begrenzungsmöglichkeit aller Feldtypen wäre auch ein Mittel gegen Fehlgebrauch. Nur weiß ich nicht, wie hoch der Programmierungsaufwand wäre.
Beitrag geändert von tomno399 (15.10.2020 15:35:00)
Bei mpform kannst du die eingegebenen Werte in der private.php in der Funktion private_function_for_field() prüfen. Für jede Field-ID kannst du die Eingabe gegen irgendwelche Grenzen prüfen und wenn diese für das jeweilige Feld nicht eingehalten sind, gibst du eine Fehlermeldung zurück. Wenn der Leerstring zurückgeliefert wird, war die Eingabe Ok. Das verhindert zwar nicht die Eingabe von unzulässigen Werten schon im Browser, aber es verhindert immerhin, dass das Formular mit falschen Werten erfolgreich abgeschickt wird.
Wenn du schon die Eingabe falscher Werte verhindern möchtest, müsstest du das selbst mit Javascript erledigen, den du über ein Pseudo-Feld vom Typ "html Code" einfügst, aber da gibt es nichts Vorgefertigtes. - und es tut nur, wenn der Besucher Javascript im Browser auch aktiviert hat, während die Prüfung der submittierten Werte in der private.php unabhängig vom Browser ist.
Offline
Hm, naja, HTML5 bietet schon einige Möglichkeiten, die Eingaben browserseitig zu prüfen.
Bei mpform ist es ja bereits möglich, die maximale Zeichenanzahl bei Texteingabefeldern zu bestimmen (Feld "Länge") und/oder den Feldtyp "Ganze Zahl" oder "Dezimalzahl" zu wählen.
Zu überlegen wäre, noch die HTML5-Input-Typen color, date / datetime-local, tel, number, range zu ergänzen (bzw. diese statt der derzeitigen javascript-basierten Eingabeüberprüfungen zu verwenden) und vielleicht im Backend noch außer den Radiobuttons für den Eingabetyp noch die Möglichkeit anzubieten, Minimum-/Maximal-Werte zu definieren, vgl. https://www.w3schools.com/html/html_for … _types.asp.
(Bei miniform könnte man das von Hand im generierten Formular-HTML-Template anpassen, also bei einem PLZ-Feld dann noch maxlength="5" usw. eintragen)
Code allein macht nicht glücklich. Jetzt spenden!
Offline
Hm, naja, HTML5 bietet schon einige Möglichkeiten, die Eingaben browserseitig zu prüfen.
Bei mpform ist es ja bereits möglich, die maximale Zeichenanzahl bei Texteingabefeldern zu bestimmen (Feld "Länge") und/oder den Feldtyp "Ganze Zahl" oder "Dezimalzahl" zu wählen.
Danke dass du das erwähnst.
Ich war gedanklich schon bei Prüfungen wie Eingsbewert < 400 oder so. Typ und Feldlänge geht wie du sagst direkt und ganz bequem
Zu überlegen wäre, noch die HTML5-Input-Typen color, date / datetime-local, tel, number, range zu ergänzen (bzw. diese statt der derzeitigen javascript-basierten Eingabeüberprüfungen zu verwenden) und vielleicht im Backend noch außer den Radiobuttons für den Eingabetyp noch die Möglichkeit anzubieten, Minimum-/Maximal-Werte zu definieren, vgl. https://www.w3schools.com/html/html_for … _types.asp
Ok. Muss ich mir mal anschauen was das an Umbauten mit sich bringt. Html5 ist ja mittlerweile auch schon ganz gut unterstützt. Ich hoffe nicht dass noch allzuviele Nutzer mit dem "guten alten" IE unterwegs sind
Offline
Hm, ich sehe schon: kleine Frage, große Wirkung. Ich danke euch beiden für eure Gedanken. Florians Hinweis scheint sogar für mich Laien umsetzbar und wenn mrbaseman das im Modul fest einbauen könnte, wäre es für alle User nutzbringend.
Und nicht zu vergessen, gibt es in HTML5 ja auch das (häufig übersehene) "pattern" Attribut für Input-Felder
https://wiki.selfhtml.org/wiki/HTML/For … it_pattern
da ergeben sich ganz mächtige Möglichkeiten ...
... nein in Europa verwenden wir beim Programmieren nicht € statt $ ...
Offline