2009-04-23 153 views
1

我將Google和Wikipedia搜索框添加到了一個頁面,我正在尋找一種方法來根據所選的單選按鈕來更改建議。如何使用單選按鈕切換Google(和Wikipedia)搜索框建議?

實際上,建議語言應該根據檢查的語言而改變。

這裏是我的實際代碼:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 
<title>Google Suggest Test</title> 
<script type="text/javascript" src="googlesuggest.js"></script> 
</head> 
<body> 
<form action="http://www.google.com/search" id="google_suggest" > 
<div> 
    <input name="q" value="" type="text" /> 
    <input type="submit" value="OK" /> 
    <input type="hidden" name="complete" value="1" /> 
    <input type="hidden" name="ie" value="UTF-8" /> 
    <input type="hidden" name="oe" value="UTF-8" /> 
    <input type="hidden" name="num" value="30" /> 
    <input type="hidden" name="channel" value="s" /> 
    <br /> 
    <label for="all"><input id="all" type="radio" name="lr" value="" checked="checked" />All</label> 
    <label for="lang_en"><input id="lang_en" type="radio" name="lr" value="lang_en" />English</label> 
    <label for="lang_fr"><input id="lang_fr" type="radio" name="lr" value="lang_fr" />French</label> 
    <label for="lang_de"><input id="lang_de" type="radio" name="lr" value="lang_de" />German</label> 
    <label for="lang_ru"><input id="lang_ru" type="radio" name="lr" value="lang_ru" />Russian</label> 
    <label for="lang_es"><input id="lang_es" type="radio" name="lr" value="lang_es" />Spanish</label> 
    <br /><br /> 
</div> 
</form> 
<form method="post" action="wikipedia_action.php"> 
<div> 
    <input type="text" name="wikipedia_field" /> 
    <input type="submit" value="OK" /> 
    <br /> 
    <label for="wik_en"><input type="radio" checked="checked" name="wikipedia" id="wik_en" value="wik_en" />English</label> 
    <label for="wik_fr"><input type="radio" name="wikipedia" id="wik_fr" value="wik_fr" />French</label> 
    <label for="wik_de"><input type="radio" name="wikipedia" id="wik_de" value="wik_de" />German</label> 
    <label for="wik_ru"><input type="radio" name="wikipedia" id="wik_ru" value="wik_ru" />Russian</label> 
    <label for="wik_es"><input type="radio" name="wikipedia" id="wik_es" value="wik_es" />Spanish</label> 
</div> 
</form> 
</body> 
</html> 

腳本googlesuggest.js:

$(document).ready(function(){ 

window.google = { 
    kEI: "wR-4SfmNIMyA-AbluKj5Cg", 
    kEXPI: "17259,17291,18169", 
    kHL: "fr" 
}; 
var _gjwl = location; 
function _gjuc() { 
    var a = _gjwl.hash.substring(1); 
    if (/(^|&)q=/.test(a) && a.indexOf("#") == -1 && !/(^|&)cad=h($|&)/.test(a)) { 
     _gjwl.replace("search?" + a.replace(/(^|&)fp=[^&]*/g, "") + "&cad=h"); 
     return 1 
    } 
    return 0 
}; 
window._gjuc && location.hash && _gjuc(); 

google.y = {}; 
google.x = function(e, g) { 
    google.y[e.id] = [e, g]; 
    return false 
}; 
window.clk = function(b, c, d, e, f, g, h) { 
    if (document.images) { 
     var a = encodeURIComponent || escape; 
     (new Image).src = ["/url?sa=T", c ? "&oi=" + a(c) : "", d ? "&cad=" + a(d) : "", "&ct=", a(e), "&cd=", a(f), b ? "&url=" + a(b.replace(/#.*/, "")).replace(/\+/g, "%2B") : "", "&ei=wR-4SfmNIMyA-AbluKj5Cg", g].join("") 
    } 
    return true 
}; 
window.gbar = { 
    qs: function() {}, 
    tg: function(e) { 
     var o = { 
      id: 'gbar' 
     }; 
     for (i in e) o[i] = e[i]; 
     google.x(o, 
     function() { 
      gbar.tg(o) 
     }) 
    } 
}; 

if (google.y) google.y.first = []; 
window.setTimeout(function() { 
    var xjs = document.createElement('script'); 
    xjs.src = 'http://www.google.com/extern_js/f/CgJmciswCjgNLCswDjgELCswFjgELCswFzgBLCswGDgDLCswJTjJiAEsKzAnOAAs/4Pb8ykSjyRQ.js'; 
    document.getElementsByTagName('head')[0].appendChild(xjs) 
}, 
0); 
google.y.first.push(
    function(){ 
     var google_suggest = document.getElementById('google_suggest'); 
     google.ac.i(
      google_suggest, 
      google_suggest.q, 
      '', 
      '' 
     ) 
    } 
) 
function _gjp() { ! (location.hash && _gjuc()) && setTimeout(_gjp, 500); 
} 
window._gjuc && _gjp(); 

}); 

wikipedia_action.php的PHP

<?php 
$search_field = trim($_POST['wikipedia_field']); 
$search_engine = trim($_POST['wikipedia']); 
$url_params = preg_replace('/(\)+/', '+', $search_field); 
$url = array('wik_en'=>'http://en.wikipedia.org/wiki/Special:Search?search=', 'wik_fr'=>'http://fr.wikipedia.org/wiki/Special:Search?search=', 'wik_de'=>'http://de.wikipedia.org/wiki/Special:Search?search=', 'wik_ru'=>'http://ru.wikipedia.org/wiki/Special:Search?search=', 'wik_es'=>'http://es.wikipedia.org/wiki/Special:Search?search='); 
header('Location:'.$url[$_POST['wikipedia']].$url_params) 
?> 

其實我有2個問題...

1 - 我注意到谷歌的建議,改變kHL:「en」 into kHL:「fr」法國或kHL:「德」德國人做的伎倆,但我不知道如何改變它取決於單選按鈕檢查? (如果沒有某種的onClick,jQuery的應該會更好)

2 - 我還沒有成立維基百科建議制度,這就是爲什麼我在尋找這(和建議改變)了。 它在這裏使用:

http://en.wikipedia.org/wiki/Special:Search

http://fr.wikipedia.org/wiki/Sp%C3%A9cial:Recherche

http://de.wikipedia.org/wiki/Spezial:Suche

等等

任何幫助,將不勝感激;)

回答

0

你有兩個腳本獨立工作?換句話說,Google提供了一個頁面,WP提示了一個頁面?如果是這樣,我會建議只使用兩種形式,具有唯一的ID,允許每個單獨工作。

隱藏你不使用的那個。當你點擊單選按鈕切換時,隱藏一個窗體並顯示另一個窗體。

+0

我對Google有1個表單,對維基百科有1個表單,但都在同一個頁面上。但是,對於每種形式,我都希望根據選擇的語言來更改腳本。 – Mark 2009-05-15 21:25:49

+0

對不起,我誤解了你的問題,雖然單選按鈕是在谷歌或維基百科之間切換。漠視。 – DisgruntledGoat 2009-05-16 16:01:19

0

這篇文章應該分爲兩個單獨的問題。至於Google Suggest部分的問題。您可以在單選按鈕,點擊時的jQuery代碼如下位改變KHL:

<script type="text/javascript"> 
    $(function(){ 
     $("#google_suggest input[type='radio']").click(function(){ 
      alert("kHL Before="+window.google.kHL); 
      window.google.kHL = this.id.replace('lang_','');  
      alert("kHL After="+window.google.kHL); 
     }); 
    }); 
</script> 

然而,儘管你可以通過在KHL改變正確的GoogleSuggest下拉不改變語言提醒說。換言之,kHL堅持在$(document).ready()內設置的內容。

我能想到的唯一事情就是用onchange()事件動態地重新加載googlesuggest.js。這是您需要進一步調查的內容。