Я уже проверил и все работает. Нужно просто выбрать из select обработчик и в зависимости от его выбора менять name в input вот и все.
|
Ладно я сам разберусь дальше.
Тему можно закрывать. |
Цитата:
Цитата:
Вы пишите, что начали понемногу .... Ну так подумайте и над тем, что поисковые запросы передаются не POST, а GET методами, чтобы поисковые роботы их кешировали. Почему это выгодно для сайта думаю пояснять не надо. Ну и поступать так, как это вы делаете, в смысле метод смены адреса и т.п., это не самое лучшее. Впрочем как душе угодно, нет, так нет. |
Цитата:
Попробуйте так: <html> <head> <meta charset="utf-8"> <script src="https://code.jquery.com/jquery-3.2.1.min.js"></script> <script type="text/javascript"> $(function() { var frm = $('form').submit(function() { if(!dst.val()) { alert('Выберите где искать'); return false; } }), dst = $('#inselect').change(function() { frm.attr('action', this.value); frm.find('input[type="text"]').attr('name',$(this).find('option:selected').data('name')); }) }); </script> </head> <body> <form action="" method="post" name="select"> <input name="search" type="text" placeholder="Поиск..." /> <select id="inselect"> <option value="" disabled="" selected>Где искать?</option> <option value="/search" data-name="search">Блог</option> <option value="/search-shop" data-name="searchword">Товары</option> </select> <input type="submit" value="Найти" /> </form> </body> </html> |
Nexus,
Спасибо вот теперь действительно работает как надо. Только надо в var frm = $('form#ID').submit(function()добавить id в form ну или class кому как угодно, что бы проверять какая именно форма не заполнена. А то не дает отправить другие. А так действительно все работает. Спасибо. |
laimas,
Не знаю но она работает. По умолчанию в форме стоит post, но не get. Не верите, скачайте joomla и посмотрите сами компонент com_search. Вообще да там стандартной форме есть input строки которые передают в url такой вид /search/?search=текст <input name="task" value="search" type="hidden"> <input name="option" value="com_search" type="hidden"> Но совместно с другой формой поиска не ищет правильно, по этому я убрал их. И оно так же работает как надо без них, просто в url уже не передает введенный текст |
Цитата:
/component/search/?search=текст следует только одно - параметр search передается методом GET. Форма переданная методом POST может одновременно передать и GET параметры, это параметры перечисленные в action формы, ибо action определяет GET запрос. Все поля перечисленные в форме при этом будут переданы методом POST, в теле запроса, поэтому в URL их и не видно. То есть, например, эта форма пусть имеет поля с именами a и b, сервер получит в массиве $_POST два ключа: a, b, и в массиве $_GET ключ search. Если поле <input name="task" value="search" type="hidden"> в форме и посредством JS не подставляется в action формы при отправке, то это поле будет передано методом POST и в GET параметры никак не попадет, то есть этого /component/search/?search=текст не будет. Чудес не бывает, само по себе такое не возможно. Загляните лучше в код CMS и посмотрите какие параметры скрипты принимают и обрабатывают. |
laimas,
Цитата:
Говорю post отправляет. Или тогда объясни почему, я мало в этом понимаю. Но пытаюсь разбираться. Может я чего то не понимаю/не знаю еще? http://i12.pixs.ru/storage/0/5/5/1pn...5_28356055.png http://i12.pixs.ru/storage/0/5/9/2pn...1_28356059.png Хотя да, ты прав, оно и get тоже отправляет. Но только через стандартную форму. http://i12.pixs.ru/storage/2/7/1/3pn...0_28356271.png А почему при post выдает 303 ошибку? Ладно буду дальше и лучше изучать php. А то действительно знаний в этой области недостаточно. Спасибо всем кто помогал. |
Цитата:
Забудьте на время о Джумле. Занимаясь разработкой веб приложений, обязательно имейте на компьютере своем локальный сервер. Для серверного языка как РНР самый лучший, простой и удобный это Open Server. В нем и тренируйтесь, изучая примеры из руководства РНР. В нем выполните и отправку формы методом POST в котором будет поле с именем search. Если при отправке формы в URL вы увидите ?search, а в скрипте в массиве $_GET найдете такой ключ, тогда можете бросить в меня камень, ибо я был не прав. Иначе будет повод задуматься, что само по себе поле не может стать параметром GET запроса будучи отправленным методом POST. Замените потом метод передачи формы на GET (этот метод является методом по умолчанию, так что можно просто удалить у формы method="post"). Отправьте форму. В этом случае где будут имена и значения ее полей? И это не чудеса, так определено. Поместить поле search в URL запроса можно только JS сценарием (не само поле конечно, а под именем поля определить параметр GET запроса), удалив (или нет) при этом это поле из формы. И это тоже не чудеса, это возможность на клиенте посредством активных сценариев. Все иное, это могут быть только чудеса, но их не бывает. |
Цитата:
|
ivan899,
забыл, пока пост не добавился. Статус 303, это не ошибка, этот статус сообщает, что документ по запрошенному URI нужно запросить по адресу указанному в поле location заголовка с использованием метода GET. В сети есть описание статусов HTTP запросов. |
Часовой пояс GMT +3, время: 22:22. |