2010-03-19 5 views
1

Je le jure, j'ai cette chose exacte en train de travailler sur une autre page. Je suis un noob javascript tel qu'il est gênant ...document.forms.gallery_form.submit n'est pas une fonction

function delete_gallery() { 
    var gallery = document.getElementById('gallery_id').value; 
    var form = document.getElementById('gallery_form'); 
    form.setAttribute('action', 'index.php?action=delete&section=galleries&id='+gallery); 
    document.forms['gallery_form'].submit(); 
} 

Inspecter l'élément montre qu'il est mise à jour correctement l'action:

<form method="post" action="index.php?action=delete&amp;section=galleries&amp;id=12" name="gallery_form" id="gallery_form"><input type="hidden" value="12" id="gallery_id" name="gallery_id"><p>Name: <input type="text" name="name" value="Woo"></p><p>Description:<br><textarea name="description">Dee</textarea><input type="hidden" value="2" name="artist"></p><p><input type="submit" value="Submit" name="submit"> 
    </p></form> 

Voici le bouton que j'utilise pour appeler la fonction, il est dans un tableau ci-dessous sous la forme:

<button onclick="delete_gallery()" type="button">Delete Gallery</button> 

EDIT:

Je aurais dû mentionner J'ai d'abord essayé d'utiliser la méthode getElementById, ala forms.submit(); - J'ai eu la même erreur, c'est pourquoi je suis passé à l'utilisation de document.forms [] à la place.

Répondre

9

Il est probablement à cause de cela à l'intérieur du form-

<input type="submit" value="Submit" name="submit"> 

form.submit est en cours de redéfinition avec cette entrée. Il suffit de changer le nom de submit à autre chose, comme submit1 et voir si cela fonctionne.

+0

Great catch, +1 –

+0

L'inspecteur web de Safari est d'accord avec vous. Je ne vais pas voler votre grande trouvaille, donc voici comment appeler form.submit si changer le nom du bouton submit est trop compliqué (bien que ce ne soit pas le cas): 'HTMLFormElement.prototype.submit.call (document .getElementById ('gallery_form')); ' – zneak

+0

Wow. Je ne l'aurais jamais deviné. Je vais certainement commencer à nommer mes boutons de manière plus créative à partir de maintenant. –

0

Essayez d'utiliser getElementById:

document.getElementById('gallery_form').submit(); 

et que vous avez déjà une référence à la forme simplement le soumettre:

function delete_gallery() { 
    var gallery = document.getElementById('gallery_id').value; 
    var form = document.getElementById('gallery_form'); 
    form.setAttribute('action', 'index.php?action=delete&section=galleries&id='+gallery); 
    form.submit(); 
} 
+0

Ah, j'aurais dû mentionner que j'ai essayé ça aussi. Quand cela n'a pas fonctionné, je suis passé à la façon dont je l'ai eu, puisque tous les tutoriels le font de cette façon. –