Ankündigung

Einklappen
Keine Ankündigung bisher.

Enter = Speichern verhindern

Einklappen
X

Enter = Speichern verhindern

Einklappen
  • Filter
  • Zeit
Alles löschen
neue Beiträge

  • Enter = Speichern verhindern

    Hallo Zusammen,
    ich habe einen Dialog, der modal angezeigt wird. Auf dem Dialog befindet sich ein Button mit der Aktion Speichern. Wenn ich auf einer anderen Kontrolle auf dem Dialog Enter drücke, fühlt sich der Speichern angesprochen, speichert die Eingaben und schließt den Dialog.
    Wie kann ich das verhindern? Ich habe schon in den Expert Attributen gesucht, aber nichts passendes gefunden.
    Vielen Dank für Eure Hinweise.
    Gruß
    Björn

  • #2
    Dieses Standard- Verhalten der Browser ist fast so alt wie die Browser selbst... Du kannst das "Submit via Enter" auf verschiedene Arten verhindern...In diesem Link werden verschiedene Wege behandelt, mir persönlich gefällt die JQuery- Variante am besten:
    Code:
    $(function(){
    var keyStop = {
    8: ":not(input:text, textarea, input:file, input:password)", // stop backspace = back
    13: "input:text, input:password", // stop enter = submit
    
    end: null
    };
    $(document).bind("keydown", function(event){
    var selector = keyStop[event.which];
    
    if(selector !== undefined && $(event.target).is(selector)) {
    event.preventDefault(); //stop event
    }
    return true;
    });
    });

    Kommentar


    • #3
      Hallo Tode,
      vielen Dank für den Hinweis. Komme eher aus der Destop Ecke, daher war mir das nicht bekannt.
      Ich habe jetzt versucht erstmal das Verhalten per JS zu unterdrücken. Hintergrund ist, dass ich den Key 13 auf einem Textfeld abfange, um damit zwei Click Ereignisse auf Buttons mit Data Picker Aktion auszulösen. Das funktioniert auch wunderbar. Mein erster Anlauf war es das event.preventDefault direkt in der Funktion aufzurufen. Das wurde leider komplett ignoriert. Daraufhin habe ich eine Funktion erstellt, die ich beim Form onSubmit registiert habe.

      Klicke auf die Grafik für eine vergrößerte Ansicht

Name: Code.jpg
Ansichten: 48
Größe: 12,0 KB
ID: 10131
      Jetzt funktioniert der Submit gar nicht mehr. Auch der Speichern Button geht nicht mehr...

      Kommentar


      • #4
        Sorry, aber die Ausführungen verstehe ich nicht... offensichtlich gibt es mehr Code als nur das gepostete preventSubmit... Der gepostete Code dürfte eigentlich nicht generell das Submit verhindern, insofern muss da ja noch irgendwoanders entsprechender Code hinterlegt sein... Aber nur aus dem Beispiel heraus sehe ich nicht, warum das nicht geht...

        Kommentar


        • #5
          OK, da habe ich mich wohl etwas kompliziert ausgedrückt.
          Es gibt noch ein ungebundenes Textfeld in dem ich im onkeyup Event diese Funktion aufrufe:

          Klicke auf die Grafik für eine vergrößerte Ansicht

Name: Code.jpg
Ansichten: 40
Größe: 26,6 KB
ID: 10134
          Die übergebenen Parameter sind die GUIDs von zwei Data Pickern, die ich je nach dem ob ein numerischer oder alphanumerischer Wert eingegeben wurde auslöse. Die Data Picker befinden sich im versteckten Bereich der Seite. Die dritte GUID ist das ungebundene Suchfeld.
          Das ganze sollte allerdings nichts mit dem unterdrücken des Submits zu tun haben. Ich hatte ursprünglich lediglich versucht das preventDefault bereits in dieser Funktion aufzurufen. Das wäre dann in Zeile 28 gewesen.
          Das war allerdings eine reine Hintergrundinformation bzw. die Erklärung warum ich mich für JS entschieden habe.

          Ich habe die Befürchtung, dass mein Code oben einen Fehler zurückliefert und damit das Submit komplett abgebrochen wird.
          ich habe die Zeile
          Code:
          if (event.keyCode == 13 || event.which == 13) {
          im Verdacht. Sobald die in der Funktion ist, kann ich gar nicht mehr speichern. Ich verstehe allerdings nicht was daran falsch ist.

          Kommentar


          • #6
            Also wenn ich eine solche Zeile im Verdacht habe, dann baue ich entsprechende console.logs zum debuggen ein:

            Code:
            function preventSubmit() {
                console.log( "Keycode: " + event.keyCode )
                console.log( "Which: " + event.which )
                .... Dein bisheriger Code
            }
            Dann kannst Du in der Debug- Console des Browsers ganz gut sehen, wann Dein Code aufgerufen wird, und auf welchen Werten die If- Entscheidung beruht...

            Kommentar


            • #7
              Hallo,

              wir haben uns dafür ein Standard-VTL Skript eingrichtet. Einfach den Code in ein VTL-Include kopieren und dieses auf der betroffenen Seite platzieren:
              Code:
              #**
              Autor: nmayer
              Firma: XXX
              Datum: 13.11.2019
              
              Problem: Ab Intrexx 19.03 wird beim Ausführen der Taste Enter automatisch der nächste Button ausgelöst.
              Lösung: Dieses Skript verhindert die automatische Ausführung des nächsten Buttons
              *#
              
              <script>
              $(":input").keypress(function() {
              var keycode = (event.keyCode ? event.keyCode : event.which);
              if(keycode == '13'){
              return false;
              }
              });
              </script>
              Beste Grüße!

              Kommentar


              • #8
                Hallo nmayer,
                Super, das funktioniert! Vielen Dank!!!
                Was ich daran jetzt nicht verstehe ist, warum die Enter Taste noch auf meinem Suchfeld funktioniert, das Submit aber nicht mehr ausgelöst wird.
                Gibt es eine Reihenfolge in der das Javascript zuerst ausgeführt wird oder woran liegt das?
                Beste Grüße
                Björn

                Kommentar

                Lädt...
                X