2009-04-23 154 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。这是您需要进一步调查的内容。