0

我有一个将提交给谷歌搜索设备的表单,形成一个查询字符串“q”。

在表单中,我有单选按钮和隐藏元素;单选按钮包含可供站点选择的选项;隐藏元素包含多个站点,允许用户选择多个站点搜索。

<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,它将专门删除 radio 元素或隐藏元素(其中一个可以存在于表单提交中):

// 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 教程网站中的指南,我已经阅读了如何在提交之前删除表单元素。有任何想法吗?

谢谢

4

2 回答 2

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

于 2012-09-16T20:54:17.330 回答
0

知道了!显然 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);
}
于 2012-09-17T14:08:24.213 回答