Visualizzazione dei risultati da 1 a 2 su 2
  1. #1
    Utente di HTML.it
    Registrato dal
    Oct 2007
    Messaggi
    39

    [jQuery Confirm Dialog] problema submit Post

    Bene. La situazione è la seguente:
    ho un form con diversi campi, tra i quali diversi BUTTON (submit), che vengono spediti ad uno script PHP.
    Fino ad ora ho gestito la conferma in questo modo:

    codice HTML:
    <button type="submit" name="op" value="del"   onClick="return confirm('ATTENZIONE: Vuoi eliminare Nome Elemento?')">ELIMINA</button>

    Molto semplicemente, in questo modo posso definire DIVERSI messaggi di "confirm" per diversi bottoni, e spedire il tutto via "POST"..

    Adesso vorrei ottenere lo stesso con un Dialog di jquery..
    Quindi ho trovato questo:

    codice:
    function myConfirm(dialogText, okFunc, cancelFunc, dialogTitle) {
      $('<div style="padding: 10px; max-width: 500px; word-wrap: break-word;">' + dialogText + '</div>').dialog({
        draggable: false,
        modal: true,
        resizable: false,
        width: 'auto',
        title: dialogTitle || 'Confirm',
        minHeight: 75,
        buttons: {
          OK: function () {
            if (typeof (okFunc) == 'function') {
              setTimeout(okFunc, 50);
            }
            $(this).dialog('destroy');
          },
          Cancel: function () {
            if (typeof (cancelFunc) == 'function') {
              setTimeout(cancelFunc, 50);
            }
            $(this).dialog('destroy');
          }
        }
      });
    }


    E posso chiamare la funzione tipo cosi': (in un form con id="myform")


    codice:
    <button type="submit" name="op" value="del" 
       onClick="return myConfirm( 'Vuoi eliminare Nome Elemento?', 
       function () {        document.forms['myform'].submit();      },             
        null, 
        'Conferma Eliminazione ...');
    return false;">
    ELIMINA
    </button>


    Non essendo tanto pratico.. ho notato che , senza quel "return false;" alla fine, la finestra di confirm appariva e spariva subito :P

    E qui arriva il problema: quando clicco OK nel dialog, il form (myform) viene "submittato", ma tra le variabili POST non c'e il button che è stato cliccato (dovrebbe essere name=op, value=del)

    Esiste un modo per ottenere un confirm SINCRONO, come quello base di JS (primo esempio..) ??
    Spero di essere stato chiaro. Grazie!

  2. #2
    Utente di HTML.it
    Registrato dal
    Oct 2007
    Messaggi
    39
    Bene. Per quanto ho capito la soluzione più veloce sarebbe aggiungere al form un campo "hidden", con lo stesso name/value del button cliccato.

    Ho modificato la funzione myConfirm() in questo modo:


    codice:
    function myConfirm(dialogTitle, dialogText, myform, mysubmitname, mysubmitvalue) {
      $('<div class="ui-dialog" title="'+ dialogTitle +'">' + dialogText + '</div>').dialog({
        draggable: false,
        modal: true,
        resizable: false,
            height: 200,
            width: 400,
        buttons: {
          OK: function () {
           $('<input type="hidden" name="'+mysubmitname+'" value="'+mysubmitvalue+'"></input>').appendTo($('#'+myform));
            document.forms[myform].submit();
          },
          Annulla: function () {
            $(this).dialog('destroy');
          }
        }
      });
    }

    Quindi adesso la uso cosi':


    codice:
    <form action="" method="POST" id="adminform">
    <input type="text" name="testo" value="prooooova">
    
    <br><br>
    
    <button type="submit" name="op" value="mod" 
        onClick="myConfirm('Conferma Modifica Elemento','Vuoi modificare PIPPO ?','adminform','op','mod');return false;">    
    MODIFICA
    </button>
    
    <br><br>
    
    <button type="submit" name="op" value="del" 
        onClick="myConfirm('Conferma Eliminazione Elemento','Vuoi eliminare PIPPO ?','adminform','op','del');return false;">    
    ELIMINA
    </button>
    
    </form>


    Sicuramente esiste qualche metodo migliore o cmq più "pulito" :P
    Fatemi sapere cosa ne pensate!

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.