Gregor: Jquery Confirm aus PHP starten?

Hallo,

ich nutze das Jquery-Confirm-Modul.

Bei Klick eine Nachricht einzublenden, gelingt mnir sehr gut, aber mein Einsatzweck wäre nun, aus php heraus einen Dialog einzublenden.

if (/*irgendwas/*) {
// Blende Dialog ein
}

Weiß jemand, wie das geht?

Gregor

  1. Mahlzeit,

    Bei Klick eine Nachricht einzublenden, gelingt mnir sehr gut, aber mein Einsatzweck wäre nun, aus php heraus einen Dialog einzublenden.

    Weiß jemand, wie das geht?

    ja: Gar nicht.

    Das kann nicht gehen, weil PHP auf dem Webserver läuft, lange bevor der Browser bzw. der Besucher die Webseite überhaupt sieht.

    Einen schönen Tag noch
     Martin

    --
    Wer kennt ein schönes Autofahrer-Märchen? - Radkäppchen und der böse Golf
    1. Hallo Martin,

      Weiß jemand, wie das geht?

      ja: Gar nicht.

      Das kann nicht gehen, weil PHP auf dem Webserver läuft, lange bevor der Browser bzw. der Besucher die Webseite überhaupt sieht.

      Ist mir prinzipiell klar.

      Ich dachte da an einen Workaround. Zum Beispiel einen Mausclick über JS zu simmulieren oder ähnliches.

      Gregor

      1. Ich dachte da an einen Workaround. Zum Beispiel einen Mausclick über JS zu simmulieren oder ähnliches.

        Denkbar, dass man diesen Weg gehen muss. Dann musst du Dich mit trigger, triggerEventHandler oder ähnlichem befassen, falls die Doku zum Ding nix brauchbares bringt.

  2. ich nutze das Jquery-Confirm-Modul.

    Bei Klick eine Nachricht einzublenden, gelingt mnir sehr gut, aber mein Einsatzweck wäre nun, aus php heraus einen Dialog einzublenden.

    if (/*irgendwas/*) {
    // Blende Dialog ein
    }
    

    Wenn das geht, wird Dir das die Dokue dieses Confirm-Moduls beantworten. Mit PHP hat das aber nix am Hut. Die Frage würde sich genauso stellen, würdest Du eine schnöde, statische HTML-Seite am Wickel haben.

    Auf den ersten, 5-Sekündigen Blick auf die Doku des Moduls bin ich optimistisch, dass Dein Vorhaben möglich ist. Also: RTFM.

    1. Also: RTFM.

      Längst gemacht, nichts dazu gefunden.

      Stattdessen nun einen Mausklick simmuliert, funktioniert.

      Gregor

  3. Moin Gregor,

    Bei Klick eine Nachricht einzublenden, gelingt mnir sehr gut, aber mein Einsatzweck wäre nun, aus php heraus einen Dialog einzublenden.

    Da ja wie beschrieben PHP serverseitig arbeitet und HTML generiert, hindert dich ja nichts daran das entsprechend generierte HTML auszuliefern. Mit den Browser-Entwickler-Tools siehst du die von dem jQuery-Plugin generierten DOM-Knoten und kannst deren HTML mit PHP ausgeben, z.B. den „simplen“ Alert:

    <?php if (/*irgendwas/*): ?>
        <div class="jconfirm-box jconfirm-hilight-shake jconfirm-type-default jconfirm-type-animated" role="dialog" aria-labelledby="jconfirm-box2538" tabindex="-1" style="transition-duration: 0.4s; transition-timing-function: cubic-bezier(0.36, 0.55, 0.19, 1); transition-property: all, margin;">
            <div class="jconfirm-closeIcon" style="display: none;">×</div>
            <div class="jconfirm-title-c"><span class="jconfirm-icon-c"></span><span class="jconfirm-title">Alert!</span></div>
            <div class="jconfirm-content-pane no-scroll" style="transition-duration: 0.4s; transition-timing-function: cubic-bezier(0.36, 0.55, 0.19, 1); max-height: 1058px;">
               <div class="jconfirm-content" id="jconfirm-box2538">
                   <div>Simple alert!</div>
               </div>
           </div>
           <div class="jconfirm-buttons">
               <button type="button" class="btn btn-default">ok</button>
           </div>
           <div class="jconfirm-clear"></div>
       </div>
    <?php endif; ?>
    

    Weiß jemand, wie das geht?

    Auf jeden Fall einfacher, wenn man es selbst schnell nachbaut 😉

    Viele Grüße
    Robert

  4. Hallo Gregor,

    aber mein Einsatzweck wäre nun, aus php heraus einen Dialog einzublenden.

    Bedeutet: Dein PHP Code stellt fest, dass deinE AnwenderIn etwas gepostet hat, dass besser bestätigt werden sollte.

    Fall A: Du kannst den Bestätigungsbedarf schon vor dem Submit erkennen.

    Dann tu das auch. Dinge, die bestätigt werden wollen, gehören in einen POST Request, und beim zugehörigen Form kannst Du submit abfangen und schauen ob

    • eine Bestätigung not tut
    • die Bestätigung noch nicht eingeholt wurde.

    Wenn ja, den Submit abwürgen (event.preventDefault()), den Submit-Button verstecken (weil $.confirm dem Anschein nach kein <dialog> Element verwendet und deshalb keinen echten modalen Dialog erzeugt) und das $.confirm aktivieren. Dessen OK Handler setzt

    • in einem hidden-field des Forms ein Bestätigungskennzeichen
    • simuliert click auf dem Submit-Button Der Cancel-Handler
    • blendet den Submit-Button wieder ein

    Fallback für inaktives JS: PHP merkt, dass die Bestätigung fehlt (deswegen das hidden field) und präsentiert eine separate Confirm-Seite.

    Fall B: Du merkst tatsächlich erst im PHP, dass die Bestätigung nötig ist

    Dann gib das Formular neu aus und blende ins Form einen "Bitte bestätigen" Block ein, der auch ohne JavaScript funktioniert. Generiere einen JavaScript-Fetzen, der die "Bitte Bestätigen" Funktion aufruft. Diese Funktion schmeißt als erstes den von PHP generierten Bestätigungsblock raus und steuert dann den Rest mit $.confirm.

    Diese zweigleisige Vorgehensweise ist wichtig. JavaScript läuft nicht immer. Entweder weil der Kunde es abgedreht hat, weil er in einem Funkloch sitzt und das JS verloren ging, oder weil Du einen blöden Typo drin hast.

    Rolf

    --
    sumpsi - posui - obstruxi
    1. Hallo Rolf,

      es geht um kein Formular.

      Es geht um eine Erinnerung, falls ein bestimmter Umstand eintritt.

      Ich habe es jetzt über einen simmulierten Click gelöst und es funktioniert genau, wie gewünscht.

      Gregor