2012-09-16 60 views
0

我有一個表單將提交給Google Search Appliance,形成一個查詢字符串「q」。使用element.parentNode.removeChild(element)時無法刪除表單元素

在窗體中我有單選按鈕和一個隱藏的元素;單選按鈕包含用於選擇站點的選項;隱藏的元素包含多個網站,允許用戶選擇多個網站搜索。

<input type="radio" id="site_search" name="as_sitesearch" value="www.mycompany.com" checked>Current site<br /> 
<input type="radio" id="site_search" name="as_sitesearch" value="archive.mycompany.com">Archive site<br /> 
<input type="radio" id="site_search" name="as_sitesearch" value="">Both sites<br /> 
<input type="hidden" id="as_oqOption" name="as_oq" value="www.mycompany.com archive.mycompany.com"> 

這是JavaScript我寫的,將刪除無線電元件或專門的隱藏元素(其中一人可以在表單提交存在):

// IF THE USER CHECKED "BOTH SITES", YOU WILL HAVE TO WIPE OUT THE VALUE OF as_sitesearch TO ALLOW FOR PASSING OF as_oq FOR GOOGLE ENGINE 
if (form.elements['as_sitesearch'][0].value.length == 0) { 
     var goodbyeElement = document.getElementById('site_search'); 
     goodbyeElement.parentNode.removeChild(goodbyeElement); 
} else { 
     var goodbyeElement = document.getElementById('as_oqOption'); 
     goodbyeElement.parentNode.removeChild(goodbyeElement); 
} 

然而,當提交表單時,無論我點擊什麼廣播選項,「q」都會收到廣播和隱藏元素。

不知道爲什麼會發生這種情況,因爲我遵循DOM教程網站中的指南,我已閱讀了如何在提交之前刪除表單元素。有任何想法嗎?

感謝

+0

多個元素不能共享相同的ID。 – Ryan

+0

謝謝,我做了所需的ID修改,不幸的是,同樣的問題仍然存在。無論是廣播還是隱藏的元素同時存在於表單提交中,即使其中一個或另一個應該已被銷燬 – user1544358

回答

0

下面的代碼可以幫助你:

(form.as_sitesearch[2].checked){ 
     for(var k=0; k<form.as_sitesearch.length;k++){ 
      form.as_sitesearch[k].parentNode.removeChild(form.as_sitesearch[k]) 
     } 
    } 
    else{ 
     var goodbyeElement = document.getElementById('as_oqOption'); 
     goodbyeElement.parentNode.removeChild(goodbyeElement);  
    } 

你應該把它的形式提交。這裏的表單是document.form [index];

+0

我寫了代碼但是,它已經無法工作,因爲無線電和隱藏元素都通過了,忽略了整個條件 – user1544358

0

Got it!顯然form.elements將總是因爲分組而失敗,所以不要使用它..

// IF THE USER CHECKED "BOTH SITES", YOU WILL HAVE TO WIPE OUT THE VALUE OF as_sitesearch TO ALLOW FOR PASSING OF as_oq FOR GOOGLE ENGINE 
if (document.getElementById('site_search3').checked) { 
     for (var i = 1; i <= 3; i++) { 
      eval('var goodbyeElement = document.getElementById("site_search' + i + '");'); 
      goodbyeElement.parentNode.removeChild(goodbyeElement); 
     } 
} else { 
     var goodbyeElement = document.getElementById('as_oqOption'); 
     goodbyeElement.parentNode.removeChild(goodbyeElement); 
}