2009-04-23 7 views
1

J'ai ajouté un champ de recherche Google et Wikipedia à une page et je cherche un moyen de changer les suggestions en fonction du bouton radio sélectionné.Comment faire pour basculer Google (et Wikipedia) suggestion de boîte de recherche avec le bouton radio?

En fait, la langue des suggestions devrait changer en fonction de la langue cochée.

Voici mon code actuel:

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

En fait, j'ai 2 problèmes ...

1 - J'ai remarqué pour Google suggestions que le changement kHL: "en" en kHL: "fr" pour le français ou kHL: "de" pour l'allemand fait l'affaire mais je ne sais pas comment le changer en fonction du bouton radio coché? (et sans onClick, jQuery devrait être mieux)

2 - J'ai également échoué à mettre en place le système de suggestion Wikipedia, c'est pourquoi je suis à la recherche de cela (et de changements de suggestions) aussi. Il est utilisé ici:

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

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

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

Etc.

Toute aide serait appréciée;)

Répondre

0

Avez-vous les deux scripts de travail indépendamment? En d'autres termes, une page avec Google suggère et une avec WP suggèrent? Si oui, je recommanderais simplement d'utiliser deux formulaires, avec des identifiants uniques, permettant à chacun de travailler séparément.

Cacher celui que vous n'utilisez pas. Lorsque vous cliquez sur le bouton radio pour les activer, masquez un formulaire et affichez l'autre.

+0

J'ai un formulaire pour Google et un autre pour Wikipedia mais les deux sur la même page. Mais pour chaque formulaire je voudrais changer de script en fonction de la langue sélectionnée. – Mark

+0

Désolé, j'ai mal lu votre question et même si le bouton radio devait basculer entre Google ou Wikipedia. Mépris. – DisgruntledGoat

0

Ce post devrait être divisé en 2 questions distinctes. En ce qui concerne la partie Google Suggest de votre question. Vous pouvez le bit suivant du code jquery pour changer le Khl en cliquant sur le bouton radio:

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

Cependant, alors que vous pouvez dire par les alertes que le Khl change correctement, le menu déroulant GoogleSuggest ne change pas la langue. En d'autres termes, le kHL est bloqué à ce qui a été configuré à l'intérieur $(document).ready().

La seule chose à laquelle je pense est de recharger dynamiquement googlesuggest.js avec l'événement onchange(). C'est quelque chose que vous devrez étudier plus avant.

+0

Vous avez raison, je vais séparer ce post en 2, ou le modifier une fois que je vais découvrir le système de Wikipedia et supprimer ma question à ce sujet. Je vais regarder, essayer votre code et vos suggestions et vous le faire savoir. – Mark

Questions connexes