Jörg: Einlesen eines neu generierten Input-Feld: Wo ist der Fehler?

Hallo,

ich möchte in einem BBcode-Generator das youtube-Icon mit einem weiteren Formularfeld versehen.
Geht alles auch, aber ich kriegs grad nicht hin, das Feld auszulesen.

Wo ist mein Denkfehler?

Jörg

youtubeMenu:
    '<div><label for="link">{label}</label> ' +
        '<input type="text" id="link" dir="ltr" placeholder="https://" /></div>' +
    '<div><label for="title">Video Title:</label> ' +
        '<input type="text" id="title" dir="ltr" placeholder="Enter video title" /></div>' +
    '<div><input type="button" class="button" value="{insert}" />' +
        '</div>',


....




            exec: function (btn) {
                var editor = this;

                // Öffne das Dropdown-Menü und erhalte den Callback
                defaultCmds.youtube._dropDown(editor, btn, function (id, time) {
                    var content = createElement('div');
                    appendChild(content, _tmpl('youtubeMenu', {
                        label: editor._('Video URL:'),
                        insert: editor._('Insert')
                    }, true));

                    // Hole die Werte aus den Eingabefeldern
                    var videoUrl = find(content, '#link')[0].value; // Hol die Video-URL
                    var title = find(content, '#title')[0].value; // Hol den Titel

                    // Debugging: Ausgabe in der Konsole
                    console.log('Video URL:', videoUrl);
                    console.log('Video Title:', title);
  1. Du müsstest uns schon die find Funktion auch zeigen, vermutlich liegt da der Fehler.

    1. Du müsstest uns schon die find Funktion auch zeigen, vermutlich liegt da der Fehler.

      Hallo Michael,

      danke für Deinen Ansatz.

      Ich glaube, obiger Code war ohnehin ungünstig, ich habe es mal umformuliert:

      			exec: function (btn) {
      				var editor = this;
      
      				// Öffne das Dropdown-Menü und erhalte den Callback
      				defaultCmds.youtube._dropDown(editor, btn, function (id, time) {
      					// Erstelle das Container-Element für Eingaben
      					var content = createElement('div');
      					appendChild(content, _tmpl('youtubeMenu', {
      						label: editor._('Video URL:'),
      						insert: editor._('Insert')
      					}, true));
      
      					// Hole die Werte aus den Eingabefeldern
      					var videoUrlInput = content.querySelectorAll('#link')[0]; // Hol die Video-URL
      					var titleInput = content.querySelectorAll('#title')[0]; // Hol den Titel
      
      					if (videoUrlInput && titleInput) {
      						var videoUrl = videoUrlInput.value; // Video-URL
      						var title = titleInput.value; // Titel
      
      						// Debugging: Ausgabe in der Konsole
      						console.log('Video URL:', videoUrl);
      						console.log('Video Title:', title);
      

      Das Problem ist aber ein anderes, nämlich der Zeitpunkt des Auslesens.
      Bereits beim Generieren des Formulars wird ausgelesen, da steht aber natürlich noch gar nichts drin, denn der User soll es ja dann erst eintragen.

      Wenn ich das Formular mit einem value versehe, wird genau dieser value ausgelesen, selbst wenn er später vom User überschrieben wird.

      Es gelingt mir aber nicht, einen eventhandler auf den Absendebutton zu legen, der beim absenden die Formularfelder erneut ausliest.

      Jörg

      1. Hallo,

        habe das Problem gelöst.

        Habe den Codeteil gefunden, der für die URL zuständig war und konnte dort viel einfacher um den Titel erweitern.

        Jörg