Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Вёрстка веб-сайтов > HTML: формы - одно поле ввода, много кнопок


Автор: inquisitor 20.3.2006, 03:46
Идея такова, что введя один раз слова для поиска юзер нажимает на соответствующие кнопки и просматривает результаты в различных поисковиках. Что-то типа raya.ru. Предполагал, что может получиться подобный код, но моих скромных знаний не хватает, чтобы передать внутрь формы правильное значение "q1" для "q". Значок "$" явно не используется для передачи значения переменной :/

Код

    <INPUT TYPE="text" NAME="q1" VALUE="Вася Пупкин" SIZE="30" MAXLENGTH="60"><BR>
       <FORM NAME="Form1" ACTION="http://go.mail.ru/search">
            <INPUT TYPE="hidden" NAME="q" VALUE=$q1 >
            <INPUT TYPE="submit" VALUE="mail.ru">
       </FORM>
       <FORM NAME="Form2" ACTION="http://www.google.ru/search">
            <INPUT TYPE="hidden" NAME="q" VALUE=$q1 >
            <INPUT TYPE="submit" VALUE="google.ru">
       </FORM>


Буду очень благодарен, если кто подскажет решение!

З.Ы может с РНР это проще будет?? хотя мне хотелось бы всё-таки ХТМЛ.

Автор: Ciber SLasH 20.3.2006, 06:00
Цитата(inquisitor @ 20.3.2006, 03:46 Найти цитируемый пост)
чтобы передать внутрь формы правильное значение "q1" для "q"

Это как понять?

Автор: Monty Jee 20.3.2006, 11:27
Цитата(inquisitor @ 20.3.2006, 03:46 Найти цитируемый пост)
Значок "$" явно не используется для передачи значения переменной :/

Это точно. "$" это из php, а ты его тут не используешь...
Тут по идее средствами JavaScript надо. Точно не скажу, но что-то типа
<INPUT TYPE="hidden" NAME="q" VALUE=q1.VALUE>.
В таком виде вряд ли работать будет, но смысл приблизительно такой smile

Еще, кстати, через onClick можно...

Автор: inquisitor 20.3.2006, 11:45
Цитата(Ciber SLasH @ 20.3.2006, 06:00 Найти цитируемый пост)
Цитата

ну, это чтобы правильно сформировать ссылку - в неё нужно добавить значение из поля ввода, а через "q1" хотел передать значение поля внутрь формы, иначе, если использовать ту же переменную, то это будет как её объявление и значение обнуляется.

Monty Jee, спасибо - обязательно попробую!

Автор: inquisitor 20.3.2006, 15:07
Monty Jee, мне кажется здесь проблема в том, что при передаче переменной в URL
Код

<INPUT TYPE="hidden" NAME="q" VALUE=$q1 >

происходит её объявление и обнуление, а как присвоить ей значение другой переменной я не догоняю. Уже который день по спецификациям и документациям лажу... ничего путного не нашел. onClick, в данном случае, оказалось не совсем тем, что я ищу - здесь у меня та же проблема с переприсвоением нового значения другой текстовой переменной - если пишу как переменную (без ковычек), то это интерпритируется просто как текст... хммм...

Автор: Monty Jee 20.3.2006, 15:12
Цитата(inquisitor @ 20.3.2006, 15:07 Найти цитируемый пост)
VALUE=$q1

Такого вообще быть не может "$q1" это не переменная JS и уж тем более не html. В JS переменные пишутся просто q1 и по всем правилам логики к значению поля надо обращаться именно q1.value. Кусок кода написать не могу, я не особо JS знаю, я на нем только простенькие менюшки делала...

Автор: inquisitor 20.3.2006, 15:35
Monty Jee, понятно, спасибо. Я уверен, что на JS и PHP это можно организовать, но тут же, по идее, нет ничего сложного. Надеюсь, что здесь всё-таки можно HTML обойтись.
Вот только понятия не имею как... smile
блин, я скоро с ума сойду
smile

Автор: Monty Jee 20.3.2006, 15:49
Как это на php реализовать я могу сказать, а вот с JS я не лучший помощник...
можно попробывать что-то типа

Код

<script>
function ch (){
 form.copy.value = form.text.value;
</script>
<form name="form" action="site.ru" method="post">
<input type="text" name="text" onchange="ch ();">
<input type="text" name="copy">
</form>

вот тут по идее, значения из text должно копироваться в copy (хотя у меня это немного коряво работает)

Автор: Ciber SLasH 20.3.2006, 17:11
Monty Jee, правильно написала, но я бы переписал так:
Код

<form name="form" onSubmit='this.copy.value = this.text.value; return true'>
<input type="text" name="text" value="zzzzzz">
<input type="text" name="copy">
<input type="submit" value="submit">
</form>

Автор: inquisitor 20.3.2006, 21:27
Monty Jee, хорошая идея, но к сожалению не работает. Вернее работает но не так. Спасибо!
Ciber SLasH - так и правда проще, решение уже где-то близко... теплее-теплее-теплее.... smile Спасибо! Но.... увы...

у меня вот ещё что получилось smile
Код

<form name="form" ACTION='url' >
<input type="text" name="q" value="zzzzzz">
<input type="submit" onclick='url = "http://go.mail.ru/search"; return true' value="mail.ru">
<input type="submit" onclick='url = "http://www.google.com/search"; return true' value="google.ru">

красивый такой код, но к сожалению не работает smile

Автор: Ciber SLasH 20.3.2006, 22:01
Цитата(inquisitor @ 20.3.2006, 21:27 Найти цитируемый пост)
у меня вот ещё что получилось smile

И не должно работать. Я не понял что ты хотел сделать этим кодом?
И вообще, это уже не вёрстка.

Модераторы, переместите тему в JavaScript !

Автор: korob2001 21.3.2006, 09:23
А зачем столько форм создавать?
1. Создай одну форму + сколько нужно кнопок, на каждую кнопку вешай событие onClick и передавай функции JavaScript this. Далее в функции создай условие, в котором проверяй какую кнопку нажали. В зависимости от условия собирай GET запрос и отправляй его.
Вот тебе код, который ищет на шести поисковиках. Думаю принцип понять не сложно.
Правда я писал его на скорую руку, по нормальному было бы не плохо кодировать строку запроса и отправлять её submit'ом, но это ты уже сам сделаешь, если захочешь. smile
Код

<html>
    <head>
        <title>Search</title>
        <script language="JavaScript" type="text/javascript">
            <!--//
                function querySend(to, qid) {
                    var query = "";
                    var q = document.getElementById(qid).value;
                    if (to.name == "google") {
                        query += "http://www.google.com/search?hl=ru&q=" + q + "&lr=";
                    } else if (to.name == "yandex") {
                        query += "http://yandex.ru/yandsearch?stype=&nl=0&text=" + q;
                    } else if (to.name == "rambler") {
                        query += "http://www.rambler.ru/srch?set=www&words=" + q + "&btnG=%CD%E0%E9%F2%E8%21";
                    } else if (to.name == "aport") {
                        query += "http://sm.aport.ru/scripts/template.dll?That=std&r=" + q;
                    } else if (to.name == "yahoo") {
                        query += "http://search.yahoo.com/search?p=" + q + "&fr=FP-tab-web-t&toggle=1&cop=&ei=UTF-8";
                    } else {
                        query += "http://www.ask.com/web?q=" + q + "&qsrc=0&o=312";
                    }
                    window.open(query);
                }
            //-->
        </script>
    </head>
    <body>
        <form>
            <b>Search:</b>
            &nbsp;<input type="text" size="20" id="search"/>
            &nbsp;<input type="button" name="google" value="Google" onClick="querySend(this, 'search')"/>
            &nbsp;<input type="button" name="yandex" value="Yandex" onClick="querySend(this, 'search')"/>
            &nbsp;<input type="button" name="rambler" value="Rambler" onClick="querySend(this, 'search')"/>
            &nbsp;<input type="button" name="aport" value="Aport" onClick="querySend(this, 'search')"/>
            &nbsp;<input type="button" name="yahoo" value="Yahoo" onClick="querySend(this, 'search')"/>
            &nbsp;<input type="button" name="ask" value="Ask" onClick="querySend(this, 'search')"/>
        </form>
    </body>
</html>

Автор: inquisitor 21.3.2006, 23:04
Уважаемый, korob2001,
огромное СПАСИБО! работает просто замечательно!!! Я уже давно мечтал о таком удобном инструментарии, а то часто приходится по нескольку поисковиков перебрать пока что-нибудь стоящее или по теме найдешь...
Магарычёвое дело! очень помог ты мне, код размещу на главной странице своего сайта: http://www.afips.org.
Если ты не против - запишу твой сайт (http://www.antonium.org) в "друзья" своего сайта?


Monty Jee, Ciber SLasH,
ещё раз спасибо за участие и помощь!

Автор: korob2001 23.3.2006, 15:32
Да не за что?
Цитата

Если ты не против - запишу твой сайт (http://www.antonium.org) в "друзья" своего сайта?

Если хочешь записывай, а нет то не записывай. Меня это не беспокоит. ;))))

Автор: inquisitor 24.3.2006, 18:55
хорошо!
smile

Автор: inquisitor 3.5.2006, 23:52
и всё-таки хотелось бы это дело ещё разок усовершенствовать:
 - чтобы после ввода и нажатия на "энтер" открывалось окно поиска;
 - чтобы поисовые фразы сохранялись в "куках" (или где там это ещё возможно) и при повторном поиске выпадал их список.
 smile 
...типа чтобы было как в лучших поисковиках!
Буду ОООчень благодарен за помошь!!!
 smile  

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)