18.11.2017, 01:28
|
Кандидат Javascript-наук
|
|
Регистрация: 04.11.2017
Сообщений: 117
|
|
просто так в хтмл две формы за один раз не отправишь, это тоже, что войти за один раз в две разные двери.
|
|
18.11.2017, 01:51
|
Интересующийся
|
|
Регистрация: 16.11.2017
Сообщений: 24
|
|
Lion777,
Нет, это я понимаю что не отправить 2 формы за один раз. Но я вроде и не хотел отправлять.
Я просто хотел заменить в форме значения, а уже после отправить одну форму. Просто я думаю посетителям было бы удобнее использовать одну форму чем две.
Частично те скрипты что я выше сам нашел и использовал работали и заменяли. Где еще были 2 кнопки...
Конечно код этот не самый лучший и может там ошибки даже есть, никто ведь не говорит правильно ли...
Но он заменял action.
Я просто хотел изменять значения в зависимости от выбора select, вот и всё. И думаю тут можно обычным скриптом обойтись. без костылей и дополнительных модулей в самой cms. Так как большинство того что я исправлю после обновления слетит и это нельзя переопределить в шаблон cms.
Последний раз редактировалось ivan899, 18.11.2017 в 02:00.
|
|
18.11.2017, 01:59
|
Кандидат Javascript-наук
|
|
Регистрация: 04.11.2017
Сообщений: 117
|
|
Почему я про две двери написал, потому что обработчики в разных категориях, папках, адресах у тебя. Атрибут action не для красоты, один ссылается на search, а второй на search-shop из разных категорий данные тянутся, сделай на сервере в одном файле и нет проблем.
---
Объясню популярней, колбаса в правой комнате, сыр в левой, а ты хочешь зайти за колбасой и там же взять сыр, но его там нету, он в другой комнате, ну или холодильнике, короче, по другому адресу.
Последний раз редактировалось Lion777, 18.11.2017 в 02:05.
|
|
18.11.2017, 02:10
|
Интересующийся
|
|
Регистрация: 16.11.2017
Сообщений: 24
|
|
Lion777,
нее, обработчик это я указал так в меню. Просто на один адрес нельзя назначить 2 пункта меню. Ну а так да, в разных папках это всё лежит.
У одой формы идет:
/component/search/?search=текст
У второй:
/component/jshopping/search/result вообще без какого либо текста, то есть в url вводимый текст в поле не передается.
Как по мне, проще заменить action путем несложной замены из select чем писать для этого дополнительный модуль.
|
|
18.11.2017, 02:17
|
Интересующийся
|
|
Регистрация: 16.11.2017
Сообщений: 24
|
|
А чем плоха такая замена через select? Вроде меньше кода получается? И работает не хуже.
|
|
18.11.2017, 02:25
|
Интересующийся
|
|
Регистрация: 16.11.2017
Сообщений: 24
|
|
Lion777,
Вы думаете я хочу получить результат с двух форм сразу?
я не пытаюсь взять и колбасу и сыр сразу.
Я просто пытаюсь посетителю дать выбор, искать или там или там.
Это было бы тоже самое что перед вами две двери в первую комнату и вторую, вам просто нужно выбрать куда идти. Вот и все.
Если на страницы две формы с разными обработчиками это неудобно.
А когда есть одна форма но с выбором куда идти, это удобнее.
Просто ссылка на обработчик меняются в зависимости от выбора select.
Последний раз редактировалось ivan899, 18.11.2017 в 02:30.
|
|
18.11.2017, 02:33
|
Интересующийся
|
|
Регистрация: 16.11.2017
Сообщений: 24
|
|
Я знаю что может так не правильно использовать, но это вроде работает.
Вот код который я сделал с заменой action и заменой name в input. Посмотрите как он работает через инспектор(если у вас firefox). Может подскажете как более правильно его написать.
<script src="jquery.min.js"></script>
<script type="text/javascript">
$(function() {
$('#inselect').change(function(){
$('.in').hide();
$('#' + $(this).val()).show();
});
});
</script>
<form action="" method="post">
<input id="rez" name="" type="text" placeholder="Поиск..." />
<Select id="inselect" onchange="document.getElementById('rez').name=value+''">
<option value="in2" disabled="" selected>Где искать?</option>
<option value="searchword">Блог</option>
<option value="search">Товары</option>
</Select>
<div id="in2" class="in" style="display:block">
<button>Найти</button>
</div>
<div id="searchword" class="in" style="display:none">
<input type="submit" value="Найти" onclick="this.form.action = '#1';" />
</div>
<div id="search" class="in" style="display:none">
<input type="submit" value="Найти" onclick="this.form.action = '#2';" />
</div>
<input name="setsearchdata" value="1" type="hidden">
</form>
Последний раз редактировалось ivan899, 18.11.2017 в 02:36.
|
|
18.11.2017, 02:43
|
Интересующийся
|
|
Регистрация: 16.11.2017
Сообщений: 24
|
|
Это что то на подобии поиска, может видели в интернете на сайтах? Искать где: На сайте, в интернете(google, yandex).
Вот это примерно тоже самое. Только ищет оно на сайте в двух разных компонентах, не всё вместе, а только либо там, либо там.
|
|
18.11.2017, 03:22
|
Профессор
|
|
Регистрация: 14.01.2015
Сообщений: 12,989
|
|
Сообщение от ivan899
|
У одой формы идет:
/component/search/?search=текст
У второй:
/component/jshopping/search/result вообще без какого либо текста
|
Без текста сервер просто ничего не найдет. Первый это поиск, как и должен быть, то есть GET запрос, второе не известно что, но передаваемое методом POST, а не потому, что без какого либо текста.
С этого надо было начинать тему, а не о двух формах. Если вы подмените action формы на эти адреса, то работать не будет по причине того, что разные методы запроса ожидает сценарий (если /component/jshopping/search/result это поиск). То есть наряду со сменой адреса, имени поля запроса, нужно еще менять и метод передачи формы. Вам Nexus показывал код который меняет и имя поля, добавьте в него еще и смену метода запроса и будет работать. А кнопки submit в скрытые элементы не прячьте, нужна всего одна и без обработчика.
Последний раз редактировалось laimas, 18.11.2017 в 03:52.
|
|
18.11.2017, 04:23
|
Интересующийся
|
|
Регистрация: 16.11.2017
Сообщений: 24
|
|
laimas,
Ну во первых и та и другая форма отправляет запрос методом post.
Во вторых, я бы не спрашивал как заменить если бы это не работало.
Я меняю action в форме и у меня ищет в блоге, меняю на другой и у меня так же нормально ищет в товарах.
Мне не нужна смена метода запроса...
Форма работает что я выше скинул код, только она с 3 кнопками, хотелось бы компактнее как то, но не знаю как это сделать.
То что Nexus скинул код, он почему то не работает, там name не меняется, а вот action меняется
Последний раз редактировалось ivan899, 18.11.2017 в 04:26.
|
|
|
|