2010-03-19 42 views
1

我發誓,我有這個確切的事情在另一個頁面上工作。我這樣一個javascript小白很尷尬......document.forms.gallery_form.submit是不是一個功能

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(); 
} 

檢查的元素顯示,它的正確更新的操作:

<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> 

這是我用來調用該函數的按鈕,很表下面的表格:

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

編輯:

我應該提到我試着先使用getElementById方法,ala forms.submit(); - 我有同樣的錯誤,這就是爲什麼我改用document.forms []代替。

回答

9

這是可能是因爲這個形式 -

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

form.submit正在使用此輸入進行重新定義。只需將名稱從submit更改爲其他內容,例如submit1並查看是否有效。

+0

很棒的捕獲,+1 – 2010-03-19 22:35:23

+0

Safari的網絡檢查員同意你的看法。我不打算偷你的偉大的發現,所以這裏如何調用form.submit如果更改提交按鈕的名稱太麻煩了(儘管它不應該):'HTMLFormElement.prototype.submit.call(document .getElementById('gallery_form'));' – zneak 2010-03-19 22:37:01

+0

哇。我從來不會猜到它。我從現在開始更加有創意地開始命名我的按鈕。 – 2010-03-19 22:47:37

0

嘗試使用getElementById

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

並且你已經有了表單的引用剛剛提交:

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

啊,我應該提到我也嘗試過。如果這樣做不起作用,我就轉向了自己的方式,因爲所有的教程都是這樣做的。 – 2010-03-19 22:21:39