2010-04-28 4 views
1

Je souhaite définir un cookie lorsqu'un utilisateur soumet un formulaire.Plugin cookie Jquery - mettre un cookie lorsque l'utilisateur soumet le formulaire

Je travaille avec un code existant qui définit un cookie basé sur un utilisateur cochant une case, mais qui aimerait simplement définir le cookie lorsqu'un utilisateur soumet un formulaire.

Voici ce que j'ai, qui fonctionne quand une case est cochée:

$().ready(function() 
{ 
    $('.application-form').submit(function(e) 
    { 
     e.preventDefault(); 

     if ($('.application-form input[name=marketing]').is(':checked')) 
     { 
      $.cookie('agreed_to_terms', '1', { path: '/', expires: 999999 }); 
     } 
    }); 
}); 

Cela fonctionne très bien, mais je ne veux pas l'ensemble des cookies lors de la vérification de l'entrée « marketing », plutôt juste au moment où la formulaire soumet. Comme ceci:

$().ready(function() 
{ 
    $('.application-form').submit(function(e) 
    { 
     e.preventDefault(); 

     if ($('.application-form').submit();) 
     { 
      $.cookie('agreed_to_terms', '1', { path: '/', expires: 999999 }); 
     } 
    }); 
}); 

Cependant, cela ne met pas le cookie avec succès, des idées seraient grandes, merci.

Répondre

5

Vous n'avez pas besoin de vérifier si la valeur renvoyée est renvoyée si la condition est remplie.

$().ready(function() 
{ 
    $('.application-form').submit(function(e) 
    { 
     e.preventDefault(); 

     $.cookie('agreed_to_terms', '1', { path: '/', expires: 999999 }); 
    }); 
}); 
+0

Merci, cela fonctionne, mais souligne d'autres problèmes auxquels je pense maintenant (voir ci-dessus). – Dave

+0

@Dave - apprécierait si vous upvote car cela fonctionne pour vous. – Krunal

5
$(document).ready(function() { 
    $('.application-form').submit(function(e) { 
    e.preventDefault(); 
    $.cookie('agreed_to_terms', '1', { path: '/', expires: 999999 }); 
    }); 
}); 

Vous n'avez pas besoin si la condition là, parce qu'il semble vérifier si le formulaire a été soumis ou non, et vous savez déjà qu'il a, parce que vous êtes en soumettre le gestionnaire d'événements de la forme .

+0

Très bien. Cela définit le cookie avec succès et soumet le formulaire, cependant, la page ne recharge pas et ne va pas à sa page "merci", alors que lorsque je mets le cookie en utilisant ma méthode précédente, cela se produirait. La page semble ne rien faire, même si elle définit le cookie, soumet à la base de données et envoie un email - ça marche, mais il semble que quelque chose soit connecté au .submit() où je suis en train de configurer le cookie, formulaire se comporte post soumettre, des idées? merci – Dave

+0

Je suis un peu confus. Après avoir défini le cookie, voulez-vous que le formulaire se soumette normalement à la page spécifiée dans son attribut "action"? Supprime le "e.preventDefault();" faire une différence? – GlenCrawford

+0

Oui c'est correct, je voudrais qu'il se soumette normalement. Suppression du "e.preventDefault();" rend le formulaire se comporter comme je le voudrais, merci beaucoup. Toutes mes excuses, mais comme je l'ai dit, c'est un code hérité, et je ne savais pas exactement ce que "e.preventDefault();" fait - et je ne suis pas vraiment - fait-il comme son nom le suggère? Arrêter un comportement par défaut des navigateurs, dans ce cas, le formulaire de soumission? Je vous remercie. – Dave