Beiträge von Sempervivum
-
-
PS: Reihenfolge und Gestaltung der Bedienelemente kann man auch über eine Option steuern:
-
Wenn sie direkt beieinander sind, hast Du wahrscheinlich für beide das gleiche float angegeben. In dem Fall kannst Du einen Abstand durch ein margin herstellen.
ZitatUnd wo kann ich die Anzahl entries, die angezeigt werden sollen ändern?
Werte in der Dropdown-Liste:
https://datatables.net/reference/option/lengthMenu
Anfangswert:
https://datatables.net/reference/option/pageLength
ZitatWie mache ich es, dass ich das ganze auf eine Tabelle mit mehr Kolumnen übertragen kann?
Ich erwarte, dass das selbst anpassend ist, d. h. die Parameter werden aus der Tabelle gelesen und daraus die Suchfelder aufgebaut.
Ist jedenfalls in diesem Beispiel so, wenn man sich das JS ansieht:
https://datatables.net/examples/api/multi_filter.htmlZitatUnd die Beschriftung?
Findest Du ebenfalls in den Optionen unter "Internatianalization":
https://datatables.net/reference/option/ -
Hiernach:
https://developer.mozilla.org/de/docs/Web/HTML/Element/textarea
gibt es maxlength nur in HTML5. Hast Du auch den entsprechenden Doctype?
-
Ich hatte es im HTML-Inspektor getestet. Jetzt habe ich es noch Mal in eine Testseite eingetragen und auch dort funktioniert es einwandfrei.
-
Das ist häufig so bei Bibliotheken: Elemente werden dynamisch durch Javascript angelegt, dann sind sie im HTML-Inspektor sichtbar aber nicht im Quelltext.
Das CSS hatte ich getestet, vielleicht funktioniert es bei dir nicht, weil die Klassen anders sind. Ich untersuche es mal.
-
-
Sehr gute Idee, dieses Tut zu schreiben. Fragen bzg. Kontaktformular werden ja häufig gestellt und dann kann man auf diesen Thread verweisen und muss nicht jedes Mal bei Adam und Eva anfangen.
-
Oh, bin in die falsche Zeile gerutscht. Eigentlich wollte ich dies posten:
https://datatables.net/examples/api/multi_filter.html
Vergiss das globale Suchfeld oben rechts, die spaltenspezifischen Suchfelder befinden sich unter der Tabelle.
Man kann es aber auch so einrichten, dass man die Spalte mit einem Select auswählen kann, wie Du es beschrieben hast.
-
Gut gemacht, JR!
-
-
Gebaut nicht, aber das von CSS-Tricks läuft bei mir. Ich vermute, dieses Skript ist deshalb so kompliziert, weil nicht jeder Browser Drag&Drop unterstützt und man deshalb eine Rückfallebene eingebaut hat.
-
Ich bevorzuge ja das Flexlayout:
HTML
Alles anzeigen<!doctype html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Test</title> </head> <body> <style> main { display: flex; flex-direction: row; width: 100vw; } .container.left { display: flex; flex: 1 1 33%; flex-direction: column; align-items: center; background-color: yellow; } .container.right { display: flex; flex: 1 1 66%; flex-direction: row; flex-wrap: wrap; align-content: flex-start; justify-content: center; background-color: lightgrey; } .box.left, .box.right { flex: 1 1 50%; display: flex; flex-direction: column; align-items: center; } .header1 { width: 80%; height: 30px; background-color: black; text-align: center; margin-left: 1.5%; border-radius: 15px; margin-top: 5px; font-size: 20px; color: white; } .button { width: 150px; height: 100px; background-color: white; margin-left: 5px; margin-top: 0px; margin-bottom: 5px; border-radius: 20px; text-align: center; font-size: 18px; opacity: 0.8; } @media only screen and (max-width: 550px) { .container.right, .container.left { flex: 1 1 50%; } .box.left, .box.right { flex: 1 1 100%; } } </style> <header class="allgemein">Intranet <a href="Intranet.html"> <div class="logo"></div> </a> <a href="Intranet.html"> <div class="exe"></div> </a> </header> <main> <div class="container left"> <div class="box left"> <p class="header1">Links</p> <div class="button"> <div class="header2">Konstruktions- richtlinien </div> <div class="datei-word"></div> </div> <div class="button">hallo</div> <div class="button">hallo</div> <div class="button">hallo</div> <div class="button">hallo</div> </div> <div class="box left"> <p class="header1">Links</p> <div class="button">hallo</div> <div class="button">hallo</div> <div class="button">hallo</div> </div> </div> <div class="container right"> <div class="box right"> <p class="header1">Links</p> <div class="button"> <div class="header2">Konstruktions- richtlinien </div> <div class="datei-ordner"></div> </div> <div class="button">hallo</div> <div class="button">hallo</div> </div> <div class="box right"> <p class="header1">Links</p> <div class="button"> <div class="header2">Konstruktions- richtlinien </div> <div class="datei-ordner"></div> </div> <div class="button">hallo</div> <div class="button">hallo</div> </div> <div class="box right"> <p class="header1">Links</p> <div class="button"> <div class="header2">Konstruktions- richtlinien </div> <div class="datei-ordner"></div> </div> <div class="button">hallo</div> <div class="button">hallo</div> </div> <div class="box right"> <p class="header1">Links</p> <div class="button"> <div class="header2">Konstruktions- richtlinien </div> <div class="datei-ordner"></div> </div> <div class="button">hallo</div> <div class="button">hallo</div> </div> </div> </main> </body> </html> -
Zitat
nur dass ich einen bestimmten Ordner angebe
Das erlaubt Javascript nicht. Du musst jedes Mal die Bilder interaktiv auswählen.
-
Dafür würdest Du einen lokalen Webserver und PHP benötigen. Die Bilder kannst Du dann mit glob() einlesen. Dabei werden sie gleich sortiert, so dass Du das neueste anzeigen kannst.
-
Die PHP-Seite wird auch hier beschrieben:
-
Dafür gibt es ein mächtiges Plugin:
https://datatables.net/examples/api/multi_filter_select.html
Features, die man nicht braucht, kann man abschalten, z. B. das Sortieren:
-
Ich habe es mal im Opera getestet und kann die Anzeige im HTML-Inspektor nicht finden. Deshalb denke ich, dass hier Handarbeit angesagt ist.
Ich habe mal in meinen Testdateien gesucht und dies gefunden:
Code
Alles anzeigen<div class="wrtt tooltips"> <input class="tooltips" pattern="^[0-9]*$" /> <span>Falsche Eingabe</span> </div> <div class="wrtt tooltips"> <input class="tooltips" pattern="^[0-9]*$" /> <span>Falsche Eingabe</span> </div> <style> .wrtt.tooltips { margin-top: 20px; position: relative; display: inline-block; } .wrtt.tooltips span { position: absolute; width: 140px; color: #FFFFFF; background: salmon; height: 30px; line-height: 30px; text-align: center; border-radius: 6px; } .wrtt.tooltips span:after { content: ''; position: absolute; bottom: 100%; left: 50%; margin-left: -8px; width: 0; height: 0; border-bottom: 8px solid salmon; border-right: 8px solid transparent; border-left: 8px solid transparent; } input.tooltips + span { visibility: visible; opacity: 0.8; top: 34px; left: 50%; margin-left: -76px; z-index: 999; } input.tooltips:valid + span { visibility: hidden; } </style>Nur CSS, zeigt den Fehler sofort bei der Eingabe an. Will man ihn erst beim Submit anzeigen, muss man wahrscheinlich noch etwa Javascript hinzu fügen. Das kann man dann beliebig gestalten und positionieren.
-
Dann versuchen wir es mit onchange und einer for-Schleife:
Code
Alles anzeigenrelselect.onchange = function() { var dataselect = document.listForm.data; dataselect.innerHTML = ''; var cdata = data[this.options[this.selectedIndex].innerHTML] for (var i = 0; i < cdata.length; i++) { var item = cdata[i]; var opt = new Option(item.Name); opt.setAttribute("data-telefon", item.Telefon); dataselect.appendChild(opt); }; }; -
Ich habe mal einen Vorschlag ohne jQuery ausgearbeitet:
Code
Alles anzeigen<form name="listForm"> <select name="relation"> </select> <select name="data"> </select> </form> <script> var data = { '100': [ {Name:'Bernd', Telefon: '00011'}, {Name:'Frank', Telefon: '00014'} ], 101: [ {Name:'Klaus', Telefon: '00012'} ], 102: [ {Name:'Dieter', Telefon: '00013'} ] }; document.listForm.relation.options[document.listForm.relation.length] = new Option('100'); document.listForm.relation.options[document.listForm.relation.length] = new Option('101'); document.listForm.relation.options[document.listForm.relation.length] = new Option('102'); var relselect = document.listForm.relation; relselect.addEventListener("change", function() { var dataselect = document.listForm.data; dataselect.innerHTML = ''; data[this.options[this.selectedIndex].innerHTML].forEach(function (item, idx) { var opt = new Option(item.Name); opt.setAttribute("data-telefon", item.Telefon); dataselect.appendChild(opt); }); }); var e = document.createEvent('HTMLEvents'); e.initEvent("change", false, true); relselect.dispatchEvent(e); </script>Prüfe, ob es das ist, was Du brauchst. Die Definition der Daten habe ich so geändert, dass der Zugriff möglichst einfach ist.