2010-01-20 8 views
-2

Pour une raison quelconque, cela ne change pas l'action du forum. J'ai un code pour modifier l'action d'une forme lorsqu'un bouton est cliqué:jQuery manipuler des formulaires

function changeForm(event){ 
    alert("Before: "+jQuery("#franchiseform").attr("action")); 
    jQuery("#franchiseform").attr("action", "franchisepreview.php"); 
    alert("After: "+jQuery("#franchiseform").attr("action")); 
    jQuery("#franchiseform").submit(); 
    } 

La liaison:

jQuery("input.preview").bind("click", changeForm); 

La forme:

<form method="post" enctype="multipart/form-data" action="franchiseinsert.php" class="insert-new" id="franchiseform"> 

Les boutons:

<input type="button" value="Preview" id="preview" name="preview" id="preview" class="preview" /><input type="submit" value="Insert" /> 
+3

alors quel est le problème? –

+0

Sérieusement, où est la question? –

+0

Sérieusement, j'ai édité la question. Le problème est que cela ne fonctionne pas comme prévu, désolé pour la confusion. –

Répondre

0

Il se trouve que c'est un bug spécifique Firefox/Mac. Cela fonctionne sur d'autres plates-formes et navigateurs, mais pas sur cet ordinateur spécifique pour une raison quelconque. Ce pourrait être un conflit d'extension ou autre chose, je vais simplement utiliser un autre navigateur.

+0

Sachez simplement que si cette page est utilisée pour un usage public, alors vous aliénez une part décente d'utilisateurs. – ryanulit

0

À moins que vous ne vous en retiriez trop , il semble que vous ayez besoin de mettre votre appel "après" dans une fonction appelée "changeForm", qui est ce que vous liez à l'événement click.

autrement, garder enchaînant:

jQuery("input.preview").bind("click", function(){ 
    jQuery("#franchiseform").attr("action", "franchisepreview.php")); 
    jQuery("#franchiseform").submit(); 
}); 
+0

Non, c'est dans une fonction. J'ai édité la question originale. –

+0

ok alors, changez la méthode de liaison à appeler à Jquery ("# ​​aperçu") – Cryophallion

+0

Et les alertes sont juste pour tester? J'utiliserais firebug ou similaire pour voir si le clic est en train de changer des choses, et je garde juste le changement d'action dans la fonction, pour m'assurer qu'il se déclenche. – Cryophallion

1

Tout d'abord, vous devez nettoyer le

<input type="button" value="Preview" id="preview" name="preview" id="preview" class="preview" /> 

à:

<input type="button" value="Preview" id="preview" name="preview" /> 

comme entrée ne doit pas avoir plusieurs attributs id et vous ne devriez pas utiliser les classes et les id avec le même nom. Cela pourrait être l'une des raisons pour lesquelles vous rencontrez des problèmes. Ensuite, je le code suivant et l'URL d'action a été réellement changer:

<html> 
<head> 
    <title></title> 

    <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js"></script> 

    <script type="text/javascript"> 
     $(document).ready(function() { 

      $("#preview").bind("click", changeForm); 

      function changeForm(event){ 
       alert("Before: "+ $("#franchiseform").attr("action")); 
       $("#franchiseform").attr("action", "franchisepreview.php"); 
       alert("After: "+ $("#franchiseform").attr("action")); 
       $("#franchiseform").submit(); 
      } 
     }); 
    </script> 

</head> 
<body> 
    <form method="post" enctype="multipart/form-data" action="franchiseinsert.php" class="insert-new" id="franchiseform"> 
     <input type="button" value="Preview" id="preview" name="preview" /> 
     <input type="submit" value="Insert" /> 
    </form> 
</body> 
</html> 
Questions connexes