2010-07-02 4 views
1

J'utilise jquery Impromptu pour soumettre un de mes formulaires. Dans l'URL mentionnée ci-dessus, je me sers de l'exemple 2.jQuery impromptu: Formulaire soumis avant même Oui ou Non ic cliqué

Maintenant, quand j'essayez d'incorporer la même chose dans ma soumission d'un formulaire, le formulaire est soumis obtenir avant même clcik sur le oui/aucun bouton.

J'utilise la ligne suivante de code pour le formulaire soumettre

<input type="image" name="delete" src="images/delete.png" onclick="$.prompt('Are you sure??',{ buttons: { Ok: true, Cancel: false } })"> 

Je suis sûr que je suis absent sur quelque chose. Quelqu'un peut-il m'aider s'il vous plaît?

Merci,
alloi

Répondre

0

Fancy demande comme ce spectacle un message sur/sur la page, mais ils se font pas suspendre l'exécution comme alert et confirm faire. (C'est ce qu'ils veulent dire sur the docs page quand ils disent "Ceci n'est pas destiné à être un remplacement modal ...") Donc bien que vous montriez l'invite, la soumission de formulaire continue.

La façon habituelle de gérer cela est d'afficher l'invite, mais annuler la soumission du formulaire, puis soumettre le formulaire par programme si l'utilisateur dit «Oui».

Fondamentalement, vous:

  • Mettre en place un submit gestionnaire sur le formulaire afin qu'il annule la soumission si elle a dit de
  • Mettre en place l'image cliquez pour dire la forme d'annuler la soumission et spectacle l'invite à la place
  • Mettre en place un gestionnaire sur le bouton « Oui » de l'invite à soumettre le formulaire
1

Essayez quelque chose comme ceci:

<input type="image" name="delete" src="images/delete.png" onclick="$.prompt('Are you sure??',{ buttons: { Ok: $('form#foo').submit(), Cancel: false } }); return false;"> 

Mieux encore, essayez de faire votre JS unobstrusive:

<input type="image" name="delete" src="images/delete.png" /> 

 

$('input[name=delete]').click(function() { 
    $.prompt('Are you sure??',{ 
     buttons: { 
      Ok: $('form#foo').submit(), 
      Cancel: false 
     } 
    }); 
    return false; 
}); 
+0

Cette propriété 'Ok' entraînera la soumission du formulaire * tout de suite *. Besoin d'envelopper dans une fonction. De plus, jQuery s'assure-t-il que renvoyer 'false' à partir de l'événement' click' du bouton image empêchera la soumission du formulaire? Parce que ce n'est pas un comportement cross-browser fiable. –

+0

@ T.J., Vous avez raison au sujet de l'emballage de la fonction, je ne suis pas familier avec le plugin donc il m'a échappé.Renvoyer false empêchera le formulaire d'être soumis en cliquant sur ce bouton, mais il n'empêchera pas de le soumettre en appuyant sur Entrée, par exemple. –

+0

@Tata: Je pense que le 'true' est juste de dire au plugin d'afficher le bouton' Ok'; il y a une chose distincte à propos des rappels. (Je ne connais pas non plus le plugin, juste regardé les docs.) –

1

Impromptu n'attend pas avant l'exécution. Donc, vous ne devriez pas soumettre avant que l'utilisateur confirme l'opération.

Utilisez comme ceci:

<input type="image" name="delete" src="images/delete.png" onclick="confirmAndDelete()"> 

avec la fonction javascript:

function confirmAndDelete(){ 

    var deleteFunc = function() 
    { 
     $('form#foo').submit(); 
    }; 

    $.prompt("Are you sure?", 
      { 
       title: "Delete Confirm", 
       buttons: { "Yes": true, "No": false }, 
       submit: function (e, val, m, f) {        
          if (val == true) 
           deleteFunc(); 
          else 
           console.log('Delete not confirmed!'); 
         } 
       }); 

} 
Questions connexes