Submit bzw. Link-Klick mit UI-Dialog

k3nguruh

Erfahrenes Mitglied
Hallo,

ich versuche mich gerade mit jQuery und beschäftige mich schon eine Weile mit folgendem Problem.

Was soll passieren?
Wenn man auf einem Form-Submit-Button bzw. einen normalen Link (mit class="jSubmitForm") klickt, soll dieser Klick abgefangen, geprüft, und ggf der UI-Dialog angezeigt werden und dann soll der Klick erst ausgeführt werden, oder halt auch nicht.

Jetzt mal alles gekürzt auf das wichtigste...

So sieht ein Formular aus (der "mode" kann auch andere Werte besitzen):
HTML:
<form .....>
  <input type="hidden" name="mode" value="delete" />
  <button type="submit" name="submit" disabled="disabled">Eingaben speichern</button>
</form>

und so ein Link:
HTML:
<a class="jSubmitForm" mode="delete" href="......">Löschen</a>

so, und nun mal zu dem, was ich bis jetzt durch massenweise Suchanfragen und Selbstbau habe:
Code:
(function($) {
    $.fn.submitForm = function(){

        return this.each(function() {
            $(this).attr('disabled', false);
        })
        .on({
            'click': function(event) {
                event.preventDefault();

                var $this = $(this),
                    modeVal, dialogTitle, dialogText;

                if ($this.prop('type') == 'submit')
                    modeVal = $('input[name="mode"]:hidden', $this.closest('form')).val();
                else
                    modeVal = $this.attr('mode');

                switch(modeVal)
                {
                    case 'delete':
                        dialogTitle = 'Eintrag löschen';
                        dialogText = 'Soll der Eintrag wirklich gelöscht werden?';
                        break;
                    case 'archiv':
                        dialogTitle = 'Eintrag archivieren';
                        dialogText = 'Soll der Eintrag wirklich archiviert werden?';
                        break;
                    case 'move':
                        dialogTitle = 'Eintrag verschieben';
                        dialogText = 'Soll der Eintrag wirklich verschoben werden?';
                        break;
                    default:
                    $this.unbind('click').click();
                    return;
                }

                // Hier kommt jetzt der Dialog, der bei JA ebenfalls $this.unbind('click').click(); ausführt.
            }
        });
    };
})(jQuery);

Der Code funktioniert auch bei einem Submit-Button, aber bei einem normalen Link wird erst bei einem 2. Klick der click() ausgeführt. Also irgendwie stimmt da was mit "$this.unbind('click').click();" nicht.

Wäre nett wenn mir jemand helfen könnte, um den Code richtig zu stellen.
 

Neue Beiträge

Zurück