Javascript-форум (https://javascript.ru/forum/)
-   jQuery (https://javascript.ru/forum/jquery/)
-   -   Подключение файла JQuery (https://javascript.ru/forum/jquery/77340-podklyuchenie-fajjla-jquery.html)

Dilettante_Pro 23.04.2019 13:40

<script src="https://code.jquery.com/jquery-latest.min.js"></script>
<script>
$(document).ready(InitPage);
function InitPage() {
   var inputs={}, 
        actionResult = "",
        action = $('#testform').attr('action');

   $('#testform select').each(function(){
      getQuery(this);
   });
   $('#testform select').on('change',function(){
      getQuery(this);
      if(Object.keys(inputs).length == 2) result.innerText = action + actionResult;
   });
   function getQuery(el){
       if($(el).val()!=''){
           inputs[$(el).attr('name')]=$(el).val();
           actionResult =  $.param(inputs)?'?'+$.param(inputs):'';
        }else{
           delete inputs[$(el).attr('name')];
           actionResult = '';
           result.innerText = '';
       }
   }
}
</script>
<form id="testform" action="get.php" method="GET">
    <select name="sel1" >
        <option value="">Выберите</option>
        <option value="1">Пиво</option>
        <option value="2">Спирт</option>
        <option value="3">Лимонад</option>
    </select>
    <select name="sel2" >
        <option value="">Выберите</option>
        <option selected value="3">Колбаска</option>
        <option value="4">Мясо</option>
		<option value="5">Деньги</option>
    </select>  
</form>
<div id="result"></div>

Dilettante_Pro 23.04.2019 13:41

laimas,
Наверное, для начала

laimas 23.04.2019 13:42

Цитата:

Сообщение от sloneCH
Вроде же должно работать без кнопки

Для чего это все? Форма отправленная методом GET будет передана со всем выбором в ней без всякого JS. Если же это все для Ajax запроса, то в jQuery есть два метода .serialize() и .serializeArray(), то есть ваши обработчики совсем не нужны.

laimas 23.04.2019 13:43

Dilettante_Pro, да это какой-то бардак не понятно для чего. )

Dilettante_Pro 23.04.2019 13:48

laimas,
Я в примере вообще form хотел убрать - чтобы уменьшить бардак, но потом не стал...
А так просто писал про обработчики селектов. Показать возможности.

sloneCH 23.04.2019 14:17

Цитата:

Сообщение от laimas (Сообщение 506924)
Для чего это все?

Наверное не так объяснил. К примеру выбрал я с помощью селектов два значения (они добавились в URL) и эту ссылку отправил Вам. Вы открыли эту ссылку http://site.ru/get2.php?sel1=2&sel2=5 и увидели сохраненные значения, т.е. то, что я выбрал. Мне необходимо было по простому с помощью GET без AJAX и т.п. Ajax это потом.

laimas 23.04.2019 14:22

Цитата:

Сообщение от sloneCH
Мне необходимо было по простому с помощью GET без AJAX и т.п. Ajax это потом.

Ну так отправляйте форму естественным способом методом GET и в URL будут имена полей и их значения как параметры запроса. То есть то что вы делаете, это бесполезное занятие, которое и без вас выполнит браузер.

sloneCH 23.04.2019 14:32

Так я отправлял без JS, значения подставлялись в URL, но на странице выбор не сохранялся. Сбрасывает на первоначальное. К примеру - если у меня в селекте Черный(1), Белый(2), Красный(3). Я выбираю Красный, то строка добавляет value=3. Но на странице - остается Черный в селекте, а нужно, чтобы отображался в селекте Красный. И один чувак мне сказал - JS тебе в помощь.
Если я не туда иду, то направьте пожалуйста.

laimas 23.04.2019 14:39

Цитата:

Сообщение от sloneCH
но на странице выбор не сохранялся

Здрасьте, приехали. :) А причем тут сохранение? Если форма отправляется не асинхронным методом, то есть страница перегружается, то отметить в списках выбранное ни как не зависит от того как вы там формировали параметры запроса.
Для этого либо на сервере анализируете выбор и возвращая страницу клиенту отмечаете выбранными опции с пришедшими параметрами, либо на клиенте посредством JS анализируете URL текущий, получая параметры запроса и отмечая соответствующие опции.
А вот формирование запроса, как это вы делаете, это никчемное занятие.

sloneCH 23.04.2019 14:50

Спасибо за помощь. Много что узнал, хоть даже и это было никчемное занятие.


Часовой пояс GMT +3, время: 19:01.