Форум программистов, компьютерный форум, киберфорум
jQuery
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.85/13: Рейтинг темы: голосов - 13, средняя оценка - 4.85
0 / 0 / 0
Регистрация: 06.08.2016
Сообщений: 9

Select2 multiple. Возврат результатов

09.08.2016, 16:28. Показов 2959. Ответов 8

Студворк — интернет-сервис помощи студентам
Пишу калькулятор. В нём присутствует поле с выбором видов спорта и возможностю выбора до 5 видов спорта. В свою очередь виды спорта сгрупированы в отдельные группы риска с помощью "value". Для списка использую select2 multiple через <select> <option>. При выборе нескольких видов спорта в js переменную мне возвращает только значение "value" спорта который стоит первым в алфавитном порядке выбраных спортов, хотя я предполагал что мне вернётся масив. Выбрать мне нужно из них самый рисковый, т.е. спорт с самым большим значением "value". Подскажите как это можно реализовать?
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
09.08.2016, 16:28
Ответы с готовыми решениями:

получить все записи из <select multiple='multiple'
как через JQUERY получить все записи из &lt;select multiple='multiple'

Возврат из функции результатов выборки
Добрый день. Описание: Есть функция public ResultSet select() throws SQLException { Statement stmt = conn.createStatement(); ...

плагин select2
Добрый день, товарищи, подскажите как бороться с select2. раньше никогда с ним не встречался. собственно стоит он рядом с другими...

8
20 / 25 / 12
Регистрация: 26.06.2013
Сообщений: 111
09.08.2016, 16:38
select2 массив возвращает при multiple, видимо вы у себя что-то на химичили не то...

Группировка делается через тег <optgroup label="">...</optgroup>

Посмотрите на офф документации раздел Events, там видно что при change событии возвращается массив выбранных элементов
0
0 / 0 / 0
Регистрация: 06.08.2016
Сообщений: 9
09.08.2016, 16:47  [ТС]
Я присваиваю значение переменной через getElementById().value. В этом может быть проблема?
0
20 / 25 / 12
Регистрация: 26.06.2013
Сообщений: 111
09.08.2016, 16:49
У вас как нибудь это посмотреть можно? просто не совсем понятно как у вас там все работает...
0
0 / 0 / 0
Регистрация: 06.08.2016
Сообщений: 9
09.08.2016, 16:59  [ТС]
JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
SportRateI =   [0.0012, 0.0013, 0.0081, 0.0089, 0.0007, 0.00078, 0.005 , 0.0055, 0.0012, 0.00133, 0.0083, 0.0092];
SportRateII =  [0.0014, 0.0015, 0.0092, 0.0101, 0.0008, 0.00093, 0.0056, 0.0062, 0.0014, 0.00155, 0.0094, 0.0095];
SportRateIII = [0.0016, 0.0018, 0.0108, 0.0118, 0.001 , 0.00110, 0.0066, 0.0073, 0.0017, 0.00187, 0.011 , 0.0122];
SportRateIV =  [0.002 , 0.0022, 0.0135, 0.0148, 0.0012, 0.00133, 0.0083, 0.0092, 0.0021, 0.00232, 0.0138, 0.0153];
SportRateV =   [0.0024, 0.0026, 0.0162, 0.0178, 0.0015, 0.00166, 0.0099, 0.0109, 0.0025, 0.00276, 0.0165, 0.0182];
SportRateVI =  [0.0035, 0.0038, 0.023 , 0.0252, 0.003 , 0.00331, 0.02  , 0.0221, 0.005 , 0.00552, 0.0250, 0.0276];
SportRate = [SportRateI, SportRateII, SportRateIII, SportRateIV, SportRateV, SportRateVI];
 
function GetSportName (){
SportName = document.getElementById( "SportName" ).value;
if (SportName === "0") {
return SportRate = SportRateI
}
else { if (SportName === "1") {
    return SportRate = SportRateII
    }
    else { if (SportName === "2") {
        return SportRate = SportRateIII
        }
        else { if (SportName === "3") {
            return SportRate = SportRateIV
            }
            else { if (SportName === "4") {
                return SportRate = SportRateV
                }
                else { return SportRate = SportRateVI}
            }
        }
    }
}
}
 
 
 
$(document).ready(function() {
$("#SportName").select2({
  maximumSelectionLength: 5
});
});


HTML5
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
<p>Спорт</p>
    <select type="option" class="selectes" id="SportName" class="selectes" onChange ="GetPremium  (InsPremium), GetPremiumForOneInsurer ()" multiple="multiple">
    <option  value="4">Автоспорт</option>
    <option  value="5">Альпинизм</option>
    <option  value="4">Американский футбол</option>
    <option  value="0">Бадминтон</option>
    <option  value="0">Баскетбол</option>
    <option  value="1">Батут</option>
    <option  value="0">Беговые лыжи</option>
    <option  value="2">Бейсбол</option>
    <option  value="0">Биатлон</option>
    <option  value="4">Бобслей</option>
    <option  value="4">Бокс</option>
    <option  value="4">Буерный спорт</option>
    <option  value="1">Велоспорт</option>
    <option  value="0">Водное поло</option>
    <option  value="2">Воднолыжный спорт</option>
    <option  value="5">Воздушные виды спорта</option>
    <option  value="0">Волейбол</option>
    <option  value="1">Гандбол</option>
    <option  value="0">Гольф</option>
    <option  value="2">Горнолыжный спорт</option>
    <option  value="0">Городошный спорт</option>
    <option  value="0">Гребля на байдарках и каноэ</option>
    <option  value="4">Дайвинг</option>
    <option  value="2">Дзюдо</option>
    <option  value="0">Йога</option>
    <option  value="2">Каратэ-до</option>
    <option  value="3">Каратэ традиционное</option>
    <option  value="4">Каякинг</option>
    <option  value="0">Керлинг</option>
    <option  value="3">Кик-боксинг</option>
    <option  value="1">Конный спорт</option>
    <option  value="1">Конькобежный спорт</option>
    <option  value="2">Лапта русская</option>
    <option  value="0">Легкая атлетика</option>
    <option  value="3">Мотобол</option>
    <option  value="5">Мотоспорт</option>
    <option  value="0">Настольный теннис</option>
    <option  value="3">Парусный спорт</option>
    <option  value="2">Пейнтбол</option>
    <option  value="0">Плавание</option>
    <option  value="3">Подводная охота</option>
    <option  value="3">Пожарно-прикладной спорт</option>
    <option  value="1">Прыжки в воду</option>
    <option  value="0">Пулевая стрельба</option>
    <option  value="4">Регби</option>
    <option  value="4">Роллер-спорт</option>
    <option  value="3">Рукопашный бой</option>
    <option  value="2">Самбо</option>
    <option  value="4">Силовое троеборье</option>
    <option  value="4">Скалолазание</option>
    <option  value="0">Сквош</option>
    <option  value="3">Современное пятиборье</option>
    <option  value="2">Софтбол</option>
    <option  value="4">Спелеология</option>
    <option  value="0">Спортивная акробатика</option>
    <option  value="0">Спортивная аэробика</option>
    <option  value="2">Спортивная борьба</option>
    <option  value="1">Спортивная гимнастика</option>
    <option  value="1">Спортивное ориентирование</option>
    <option  value="0">Спортивные танцы</option>
    <option  value="0">Стендовая стрельба</option>
    <option  value="0">Стрельба из лука</option>
    <option  value="0">Теннис</option>
    <option  value="1">Триатлон</option>
    <option  value="3">Тхэквандо</option>
    <option  value="3">Тяжелая атлетика</option>
    <option  value="3">У-шу</option>
    <option  value="0">Фехтование</option>
    <option  value="1">Фигурное катание</option>
    <option  value="3">Фристайл</option>
    <option  value="0">Футбол</option>
    <option  value="0">Хоккей на траве</option>
    <option  value="0">Хоккей с мячом</option>
    <option  value="1">Хоккей с шайбой</option>
    <option  value="0">Художественная гимнастика</option>
    </select>
0
20 / 25 / 12
Регистрация: 26.06.2013
Сообщений: 111
09.08.2016, 17:10
Лучший ответ Сообщение было отмечено LoonEy_Lion как решение

Решение

Если память мне не изменяет код
JavaScript
1
SportName = document.getElementById( "SportName" ).value;
вернет не value выбранного элемента по порядковый номер элемента... Поэтому и возвращается первый элемент, а не массив выбранных

По идее надо вот так:
JavaScript
1
SportName = document.getElementById( "SportName" ).options.selectedIndex;
а вообще раз select2 используется я бы делал вот так:
JavaScript
1
2
3
4
5
6
7
8
9
10
$(document).ready(function() {
     $("#SportName").select2({
          maximumSelectionLength: 5
     }).on('change', function(e){
          //и тут делаете что надо
          console.log(e.val);
          //выбираете максимальное и сравниваете ....
 
     );
});
0
0 / 0 / 0
Регистрация: 06.08.2016
Сообщений: 9
09.08.2016, 17:23  [ТС]
Цитата Сообщение от deller Посмотреть сообщение
//и тут делаете что надо
что под этим подразумевается?
При выборе спорта мне будет достаточно вернуть самый большой "value" из выбраных пользователем, я только начинаю кодить поэтому не до конца логику понял.

Было бы здорово если бы Вы помогли правильно написать функцию выбора найбольшего "value" из указаных пользователем и присвоить это значение переменной SportName и вернуть её для дальнейшего продвижения по скрипту.

Если обратили внимание то для каждой групы риска существует масив коэффициентов которые выбираются после путём if-else, поэтому крайне важно на этом этапе применить переменной правильный масив.



JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
//Определение коэффициента спорта
 
function SportRateCalc () {
if (Age === 'Взрослые' && InsNumber > 4) { 
    if (CoverTime === '24 часа в сутки') { 
        if (InsTerm === "от 1 до 5 дней") { 
            if (Program === 'Смерть, Инвалидность, Телесные повреждения') { 
                return SportRate = SportRate[8];
            }
                else{ return SportRate = SportRate[9];
                }
            }
            else{  if (Program === 'Смерть, Инвалидность, Телесные повреждения') { 
                return SportRate = SportRate[10];
                }
                else{ return SportRate = SportRate[11];
                }
            }
        }   
        else{  if (InsTerm === "от 1 до 5 дней") { 
            if (Program === 'Смерть, Инвалидность, Телесные повреждения') { 
                return SportRate = SportRate[4];
                }
                else{ return SportRate = SportRate [5];
                }
            }
            else{  if (Program === 'Смерть, Инвалидность, Телесные повреждения') { 
                return SportRate = SportRate[6];
                }
                else{ return SportRate = SportRate[7];
                }
            }
        }
}       
else{  if (InsTerm === "от 1 до 5 дней") { 
        if (Program === 'Смерть, Инвалидность, Телесные повреждения') { 
         return SportRate = SportRate[0];
        }
        else{ return SportRate = SportRate[1];
        }
    }
    else{  if (Program === 'Смерть, Инвалидность, Телесные повреждения') { 
                return SportRate = SportRate[2];
        }
        else{ return SportRate = SportRate[3];
        }
    } 
}
}
0
20 / 25 / 12
Регистрация: 26.06.2013
Сообщений: 111
09.08.2016, 17:37
https://jsfiddle.net/tL6cbjc8/9/
Вот, максимальное получили и дальше сравнивайте что нужно...

HTML5
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
<link href="https://cdnjs.cloudflare.com/ajax/libs/select2/4.0.3/css/select2.min.css" rel="stylesheet">
<script src="https://cdnjs.cloudflare.com/ajax/libs/select2/4.0.3/js/select2.full.min.js"></script>
 
<p>Спорт</p>
    <select type="option" class="selectes" id="SportName" class="selectes"  multiple="multiple">
    <option  value="4">Автоспорт</option>
    <option  value="5">Альпинизм</option>
    <option  value="4">Американский футбол</option>
    <option  value="0">Бадминтон</option>
    <option  value="0">Баскетбол</option>
    <option  value="1">Батут</option>
    <option  value="0">Беговые лыжи</option>
    <option  value="2">Бейсбол</option>
    <option  value="0">Биатлон</option>
    <option  value="4">Бобслей</option>
    <option  value="4">Бокс</option>
    <option  value="4">Буерный спорт</option>
    <option  value="1">Велоспорт</option>
    <option  value="0">Водное поло</option>
    <option  value="2">Воднолыжный спорт</option>
    <option  value="5">Воздушные виды спорта</option>
    <option  value="0">Волейбол</option>
    <option  value="1">Гандбол</option>
    <option  value="0">Гольф</option>
    <option  value="2">Горнолыжный спорт</option>
    <option  value="0">Городошный спорт</option>
    <option  value="0">Гребля на байдарках и каноэ</option>
    <option  value="4">Дайвинг</option>
    <option  value="2">Дзюдо</option>
    <option  value="0">Йога</option>
    <option  value="2">Каратэ-до</option>
    <option  value="3">Каратэ традиционное</option>
    <option  value="4">Каякинг</option>
    <option  value="0">Керлинг</option>
    <option  value="3">Кик-боксинг</option>
    <option  value="1">Конный спорт</option>
    <option  value="1">Конькобежный спорт</option>
    <option  value="2">Лапта русская</option>
    <option  value="0">Легкая атлетика</option>
    <option  value="3">Мотобол</option>
    <option  value="5">Мотоспорт</option>
    <option  value="0">Настольный теннис</option>
    <option  value="3">Парусный спорт</option>
    <option  value="2">Пейнтбол</option>
    <option  value="0">Плавание</option>
    <option  value="3">Подводная охота</option>
    <option  value="3">Пожарно-прикладной спорт</option>
    <option  value="1">Прыжки в воду</option>
    <option  value="0">Пулевая стрельба</option>
    <option  value="4">Регби</option>
    <option  value="4">Роллер-спорт</option>
    <option  value="3">Рукопашный бой</option>
    <option  value="2">Самбо</option>
    <option  value="4">Силовое троеборье</option>
    <option  value="4">Скалолазание</option>
    <option  value="0">Сквош</option>
    <option  value="3">Современное пятиборье</option>
    <option  value="2">Софтбол</option>
    <option  value="4">Спелеология</option>
    <option  value="0">Спортивная акробатика</option>
    <option  value="0">Спортивная аэробика</option>
    <option  value="2">Спортивная борьба</option>
    <option  value="1">Спортивная гимнастика</option>
    <option  value="1">Спортивное ориентирование</option>
    <option  value="0">Спортивные танцы</option>
    <option  value="0">Стендовая стрельба</option>
    <option  value="0">Стрельба из лука</option>
    <option  value="0">Теннис</option>
    <option  value="1">Триатлон</option>
    <option  value="3">Тхэквандо</option>
    <option  value="3">Тяжелая атлетика</option>
    <option  value="3">У-шу</option>
    <option  value="0">Фехтование</option>
    <option  value="1">Фигурное катание</option>
    <option  value="3">Фристайл</option>
    <option  value="0">Футбол</option>
    <option  value="0">Хоккей на траве</option>
    <option  value="0">Хоккей с мячом</option>
    <option  value="1">Хоккей с шайбой</option>
    <option  value="0">Художественная гимнастика</option>
    </select>
JavaScript
1
2
3
4
5
6
7
8
9
10
11
$("#SportName").select2({
  maximumSelectionLength: 5
}).on('change', function(e){
  console.log($(this).val());
  val_arr = $(this).val();
  var max = val_arr[0]; 
  for (var i = 0; i < val_arr.length; i++) { 
     if (max < val_arr[i]) max = val_arr[i]; 
  }
  console.log(max);
});
1
0 / 0 / 0
Регистрация: 06.08.2016
Сообщений: 9
09.08.2016, 17:44  [ТС]
Благодарю!) Прошу прощения за то что пришлось мне так распинать это))
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
09.08.2016, 17:44
Помогаю со студенческими работами здесь

Работа с Select2
Добрый день, кто работал с select2 - в каком виде принимает данные, то что json понятно, если быть конкретнее необходимо с Ajax обратиться...

Плагин Select2
Кто юзал, как получить данные у мульти поля select ? делаю так: $('select').on('select2:select', function (evt) { ...

Загрузка городов в select2
Привет всем. Может у кого-то есть готовые решения, вдруг делали когда-либо. В общем есть 3 таблицы в БД. COUNTRIES, REGIONS и CITIES. ...

Select2 input text
Здравствуйте. Использую плагин select2. Есть форма &lt;div class=&quot;group&quot;&gt; &lt;label&gt; центр&lt;/label&gt; &lt;input...

Select2 и вывод сохранённых данных
Здравствуйте. На сайте сделал форму и список с автокомплитом с помощью jquery плагина Select2, форма сохраняется в БД. Всё работает...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Новые блоги и статьи
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru