2011-09-14 3 views
2

Compte tenu de cette simple fonction javascript:Javascript de base: événement onclick ne fonctionne pas

function update_cart() { 
alert("--update--"); 
document.form1.command.value="update"; 
document.form1.submit(); 
} 

et ce bouton en bas de ma forme:

<input type="submit" value="Update" onclick="update_cart()" /> 

Les données du formulaire est « soumis » à la nouvelle URL mais la fonction update_cart n'est jamais appelée. Je sais parce que je ne reçois un message d'alerte et l'URL ... se lit? C = Albanie & m = ....

En outre, l'élément de forme

<input type="hidden" name="command"/> 

ne soit pas affecté au URL, soit. URL lit = commande & c = Albanie ...

J'ai essayé ce qui suit: changé onclick onsubmit, la vérification _request variables $, couper et coller le code des pages de travail connues. Je suis à la fin de mon esprit, et je serais reconnaissant pour toute aide!

Oh, oui: même comportement dans firefox 6, Opera 11.5, & IE7. Je cours WinXP SP3.

En vous remerciant, Sadhu!

Répondre

2

Si vous voulez que le script à exécuter sur soumettre la forme, utilisez:

<input type="submit" value="Update" onsubmit="update_cart()" /> 

L'événement onsubmit est généralement utilisé pour exécuter un script de validation. Si la validation renvoie true, le formulaire sera envoyé. Si elle renvoie false, le formulaire n'est pas envoyé. Dans votre cas, le script est codé pour soumettre le formulaire, donc aucune valeur booléenne de retour n'est nécessaire.

Sinon, je ne donnerais pas à votre bouton le type submit s'il ne soumet pas vraiment le formulaire. Vous pouvez simplement utiliser button balises avec le onclick et qui devrait fonctionner:

<button onclick="update_cart()">Update</button> 
+0

le type de bouton de deepi est probablement meilleur que les tags de bouton laids =) –

2

essayer une fois

<input type="button" value="Update" onclick="update_cart()" /> 

au lieu

<input type="submit" value="Update" onclick="update_cart()" /> 

si vous voulez que pour 'submit' puis tapez aller avec 'Allen Liu' réponse

2

enter code here si vous voulez changer Lors de l'envoi, vous devez effectuer ces modifications avant la soumission du formulaire. Vous devez donc ajouter ces options à l'événement "onsubmit" du formulaire, plutôt qu'à l'événement "onclick" du bouton d'envoi.

comme ceci:

<form name="toSubmit" onsubmit="update_cart();"><input type="submit" name="btn" value="hello"/></form> 
1

tout d'abord il n'y a pas besoin de changer votre html; voir mon demo.
À chaque clic sur un bouton d'envoi, le gestionnaire de clics (s'il existe) sera démarré, puis le gestionnaire de soumission (s'il existe) (qui devrait être dans la balise form), puis le action du formulaire sera réalisé. Cette procédure ne sera arrêtée que si un gestionnaire renvoie false.
Mais pourquoi votre fonction javascript update_cart ne sera-t-elle pas appelée?
Je pense qu'il n'a pas pu être trouvé, mais je ne sais pas pourquoi. Pouvez-vous lier la fonction à l'élément fenêtre dom uniquement pour tester (comme dans mon demo)? P.: vous n'avez pas besoin de soumettre le formulaire dans votre gestionnaire de click (si vous ne retournez pas false). Vous pouvez supprimer la ligne: document.form1.submit();. P.: il vaudra mieux ne pas utiliser un gestionnaire de clic sur le bouton de soumission, mais utiliser un gestionnaire de soumission dans la balise de formulaire (voir le demo2).

Questions connexes