2009-04-23 9 views
1

Ich habe Google und Wikipedia Suchfeld zu einer Seite hinzugefügt und ich bin auf der Suche nach einer Möglichkeit, die Vorschläge abhängig von der ausgewählten Optionsfeld zu ändern.Wie Google (und Wikipedia) Suchfeld Vorschlag mit Optionsfeld wechseln?

In der Tat sollte sich die Sprache der Vorschläge in Abhängigkeit von der überprüften Sprache ändern.

Hier ist meine eigentliche Code:

<!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> 

Script 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(); 

}); 

PHP von wikipedia_action.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) 
?> 

Eigentlich 2 Probleme, die ich habe ...

1 - Ich bemerkte für Google Vorschläge, dass die Änderung kHL: "en" in kHL: "fr" für Französisch oder kHL: "de" für Deutsch macht den Trick, aber ich weiß nicht, wie man es ändert abhängig vom aktivierten Optionsfeld? (und ohne etwas onClick, jQuery sollte besser sein)

2 - Ich habe auch nicht eingerichtet, Wikipedia Vorschlagssystem, das ist, warum ich suche dies (und Vorschläge ändern) zu. Es ist hier verwendet:

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

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

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

Etc.

Jede mögliche Hilfe geschätzt;)

Antwort

0

Haben Sie die beiden Skripte unabhängig arbeiten? Mit anderen Worten, eine Seite mit Google vorschlagen und eine mit WP vorschlagen? Wenn ja, würde ich empfehlen, einfach zwei Formulare mit eindeutigen IDs zu verwenden, die es jedem ermöglichen, separat zu arbeiten.

Verstecken Sie die, die Sie nicht verwenden. Wenn Sie auf das Optionsfeld klicken, um sie zu wechseln, blenden Sie ein Formular aus und zeigen Sie das andere an.

+0

Ich habe 1 Formular für Google und ein anderes für Wikipedia, aber beide auf der gleichen Seite. Aber für jedes Formular möchte ich das Skript abhängig von der gewählten Sprache ändern. – Mark

+0

Entschuldigung, ich habe Ihre Frage falsch gelesen und obwohl der Radioknopf zwischen Google und Wikipedia umgeschaltet wurde. Außer Acht lassen. – DisgruntledGoat

0

Dieser Beitrag sollte wirklich in 2 separate Fragen unterteilt werden. Soweit der Google-Vorschlag Teil Ihrer Frage. Sie können das folgende Bit von jQuery-Code, um die kHL zu ändern, wenn auf dem Optionsfeld klicken:

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

Doch während Sie durch die Warnungen sagen können, dass der kHL ändert richtig, die GoogleSuggest Dropdown die Sprache nicht ändern. Mit anderen Worten, der kHL bleibt bei dem, was innerhalb von $(document).ready() eingerichtet wurde.

Das einzige, was ich mir vorstellen kann, ist das erneute Laden der googlesuggest.js dynamisch mit dem onchange() Ereignis. Dies ist etwas, was Sie weiter untersuchen müssen.

+0

Du hast Recht, ich werde diesen Beitrag in 2 trennen, oder es bearbeiten, sobald ich über Wikipedia System herausfinden werde und meine Frage darüber entfernen. Ich werde es untersuchen, versuchen Sie Ihren Code und Vorschläge und lassen Sie es wissen. – Mark