2009-04-23 6 views
1

Я добавил окно поиска Google и Википедии на страницу, и я ищу способ изменить предложения в зависимости от выбранного переключателя.Как переключить предложение окна поиска Google (и Википедии) с помощью переключателя?

Фактически язык предложений должен меняться в зависимости от проверяемого языка.

Вот мой фактический код:

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

На самом деле у меня есть 2 проблемы ...

1 - Я заметил для Google предложения о том, что изменение kHL: «en» в kHL: «fr» для французского или kHL: «de» для немецкого делает трюк, но я не знаю, как его изменить в зависимости от переключателя? (и без некоторых 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

Etc.

Любая помощь будет оценена;)

ответ

0

У вас есть два сценария, работающих независимо друг от друга? Другими словами, одна страница с Google предлагает и одна с WP предлагают? Если это так, я бы рекомендовал просто использовать две формы с уникальными идентификаторами, позволяя каждому работать отдельно.

Скрыть тот, который вы не используете. Когда вы нажимаете на переключатель, чтобы переключить их, скройте одну форму и отобразите другую.

+0

У меня есть 1 форма для Google и другая для Википедии, но и на той же странице. Но для каждой формы я хотел бы изменить скрипт в зависимости от выбранного языка. – Mark

+0

Извините, я неправильно понял ваш вопрос, и хотя переключатель был переключаться между Google или Wikipedia. Игнорирование. – DisgruntledGoat

0

Это сообщение действительно нужно разбить на 2 отдельных вопроса. Что касается части Google Suggest вашего вопроса. Вы можете следующий бит Jquery код для изменения ХЛ при нажатии на кнопку радио:

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

Однако, в то время как вы можете сказать предупреждениями о том, что ХЛ изменяется правильно, выпадающий GoogleSuggest не меняет язык. Другими словами, kHL привязан к тому, что было установлено внутри $(document).ready().

Единственное, что я могу придумать, это перезагрузить googlesuggest.js динамически с помощью события onchange(). Это то, что вам нужно будет исследовать дальше.

+0

Вы правы. Я отделите это сообщение в 2 или отредактируйте его, как только я узнаю о системе Википедии и удалю свой вопрос об этом. Я изучу его, попробую свой код и предложения и сообщит вам об этом. – Mark

 Смежные вопросы

  • Нет связанных вопросов^_^