0

クエリ文字列「q」を形成して、Google 検索アプライアンスに送信するフォームがあります。

フォームには、ラジオ ボタンと非表示の要素があります。ラジオ ボタンには、選択するサイトのオプションが含まれています。hidden 要素には、ユーザーが複数のサイト検索を選択できるようにする複数のサイトが含まれています。

<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 要素または hidden 要素を排他的に削除します (そのうちの 1 つがフォーム送信に存在する可能性があります)。

// 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 に答える