tagSuggest & dataTables


Status
Dieses Thema wurde gelöst! Zur Lösung gehen…

EuroCent

KlappStuhl 2.0
#1
Hallo zusammen,

aktuell hab Ich 2 Probleme und hoffe Ihr könnt mir hier bei helfen. :)

1. beim tagSuggest kann man einen emptyText mit geben.
Der wird auch wie ein "Placeholder" erstellt, aber im "value" angezeigt.
Das bedeutet sobald man in das Input-Feld klick, verschwindet der Text nicht sondern bleibt stehen :/

Gebt es hierzu eine bessere Alternative, es sollte mit BS4 kompatible sein :)

2. im datatables von(datatables.net) gibt es dass Problem, dass ich es nicht reinitialisieren kann.
Wenn Ich im dataTable ein Element anklicke dann er mir die Werte in das aktuelle Modal ladet kommt eine Meldung dass eine reinitialisierung nicht geht :/

Das Modal lass Ich beim klick auf ein Button
Javascript:
$('#modalw').modal('show').find('.modal-body').load("./admin/load/dictionary_edit.php?id=" + $(this).data('id'));
Die Daten in das Formular zu laden ist nicht das Problem.
Das Problem ist das neu Laden des DataTables.

Hat hier einer einen Tipp oder wie Ich es bewerkstelligen kann?
Mein dataTabel lass Ich wie folgt erstellen, welches auch funktioniert, nur nicht beim erneuten laden...
Schließe Ich das Modal und öffne es wieder geht es ohne Probleme...:
Javascript:
    var table = $('#tablesorter').DataTable({
        paging: true,
        scrollY: 450,
        info: false,
        searching: true,
        language: {
            paginate: {
                first: '«',
                previous: '‹',
                next: '›',
                last: '»'
            },
            aria: {
                paginate: {
                    first: 'Anfang',
                    previous: 'Zurück',
                    next: 'Weiter',
                    last: 'Ende'
                }
            },
            search: "Suchen:",
            searchPlaceholder: "Suchen...",
            lengthMenu: "_MENU_ Einträge zeigen",
            zeroRecords: "Keine Daten gefunden...",
            loadingRecords: "Daten laden...",
            order: [[0, "asc"]],
            orderFixed: [0, "asc"]
        },
        lengthMenu: [[10, 25, 50, 100, -1], [10, 25, 50, 100, "Alle"]],
        columnDefs: [
            {
                "orderable": false,
                "targets": 1
            }
        ],
    });
 

EuroCent

KlappStuhl 2.0
#7
@Sempervivum
Vielen Dank dafür, aber dass ist für uns nicht verwendbar, zu mindestens hab Ich nicht herausfinden können wie man Multi-Tags machen kann.

Er kann scheinbar immer nur eines :(
Wir wollen aber dass der Benutzer, mehrere nach einander eingeben kann.
Sie werden in der DB gespeichert und bei anderen Themen können sie dann mit verwendet werden.

Gibt User nur einen Tag ein dann wird dieser Standard als Varchar in der DB gespeichert.
Gibt der user mehr als 2 ein wird es so in der DB gespiechert: ["Wert1", "Wert2", "etc..."]

Das Auslesen der Werte sind kein Problem.

Wir wollen aber dass der Benutzer mehrere gleichzeitig (so wie es das tagsinput *siehe oben* macht) angeben kann. sofern noch nicht in der DB vorhanden, dann werden diese in der DB übernommen.

Das TagsInput funktioniert aktuell auch bisher sehr gut, nicht jedoch was den Platzhalter-Text angeht.
Und um die Frage geht es aktuell :)

Wir möchten dass als Placeholder steht: "Schreibe hier oder Klicke rechts".
Aktuell schreibt er es laut dem Script ins Value, dies soll aber als Placeholder rein... :(

Eventuell kann hier jemand das Script anpassen/erweitern. :)
Oder uns einen Tipp geben wie wir es lösen können...
 

Sempervivum

Erfahrenes Mitglied
#8
Ich habe eine Änderung gemacht: Das Eingabefeld beim Drücken einer Taste leeren, wenn noch der emptyText drin steht (bei Zeile 1248):
Javascript:
            _onKeyDown: function (e) {
                // check how tab should be handled
                var active = ms.combobox.find('.tag-res-item-active:first'),
                    freeInput = ms.input.val() !== cfg.emptyText ? ms.input.val() : '';
                if (ms.input.val() === cfg.emptyText) ms.input.val(''); // inserted
                $(ms).trigger('keydown', [ms, e]);
Außerdem musste ich bei Zeile 566 die Funktion umlaute2html deaktivieren:
Javascript:
        /**
         * Retrieve the current text entered by the user
         */
        this.getRawValue = function () {
            // edit
            // return ms.input.val() !== cfg.emptyText ? umlaute2html(ms.input.val().trim()) : '';
            return ms.input.val() !== cfg.emptyText ? ms.input.val().trim() : '';
        };
Hast Du diese extern definiert?

Damit funktioniert der Placeholder so, wie ich es vom Standard kenne: Verschwindet, wenn man eine Taste drückt.
 
Status
Dieses Thema wurde gelöst! Zur Lösung gehen…