我有一个表单会提交给Google Search Appliance,形成一个查询字符串“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,它将独占删除无线电元素或隐藏元素(其中一个可以存在于提交表单中):
// 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 :(得分: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];
答案 1 :(得分: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);
}