Javascript-форум (https://javascript.ru/forum/)
-   jQuery (https://javascript.ru/forum/jquery/)
-   -   Select2(select option) получение значения при выборе в скрытый input value="" (https://javascript.ru/forum/jquery/64145-select2-select-option-poluchenie-znacheniya-pri-vybore-v-skrytyjj-input-value%3D.html)

ramon149 22.07.2016 07:35

Select2(select option) получение значения при выборе в скрытый input value=""
 
Добрый день!
Прошу помощь с Select2 v4 ссылка на него https://select2.github.io/options.html
С помощью него стилизовал <select>.
<input type="hidden" name="tagger-1" id="event" value="">
<select id="#event-list" multiple="multiple">		
	<option value="1">событи1</option>
	<option value="2">событи2</option>
	<option value="3">событи3</option>
	<option value="4">событи4</option>
	<option value="5">событи5</option>
</select>

Подключил Select2. Как сделать так чтобы при выборе в select2, выбранное значение подставлялось в value="" скрытого input через ",", а при удаление удалялось из input. Из того что прочитал в документации надо использовать два события: select2:select и select2:unselect и заворачивать их в (How can I attach listeners for these events?):
$('select').on('select2:select', function (evt) {
  // Do something
});

Что получилось у меня. Но в таком случае вставляется только одно значение, те если сначало было выбрано value="Событие1" при выборе другого "Событие2" затирается первое и получается value="Событие2"! А требуется: value="Событие1, Событие2, Событие3"
А при удалении удаляется значение вместе с value="".
<script type="text/javascript">
$(function(){
$("#event-list").select2({
	placeholder: 'Выберите событие',
})
//Добавление в value=""
.on('select2:select', function (evt) {
	$('#event').attr('value', this.value);
})
//Удаление из  value=""
.on('select2:unselect', function (evt) {
	  $('#event').removeAttr('value', this.value);
});
});
</script>

рони 22.07.2016 08:27

ramon149,
неправильные у вас id и вместо attr нужен val

<!DOCTYPE html>

<html>
<head>
  <title>Untitled</title>
  <meta charset="utf-8">
  <style type="text/css">
#event-list{
  width: 200px;
}

  </style>
  <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script>
  <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.min.js"></script>

</head>

<body>
<input  name="tagger-1" id="event" value="">
<select id="event-list" multiple="multiple">
  <option value="1">событи1</option>
  <option value="2">событи2</option>
  <option value="3">событи3</option>
  <option value="4">событи4</option>
  <option value="5">событи5</option>
</select>
<script type="text/javascript">
$(function(){
$("#event-list").select2({
  placeholder: 'Выберите событие'
})
//Добавление и удаление в value=""
.on('select2:select select2:unselect', function (evt) {
  $('#event').val($(this).val());
})

});
</script>


</body>
</html>

osi322 22.07.2016 08:43

Для множественного выбора используй multiple
<select id="event-list" multiple>		
	...
</select>

Для каких целей тебе скрытое поле? Чтобы получить выбранные значение обращайся на прямую
Alert($("#event-list").val())

рони 22.07.2016 08:45

Цитата:

Сообщение от osi322
Для множественного выбора используй multiple

:-?

ramon149 22.07.2016 08:50

Спасибо, за помощь :) Вечером попробую
Судя все должно работать! Еще раз спасибо :)

ramon149 22.07.2016 08:53

Цитата:

Сообщение от osi322 (Сообщение 422979)
Для каких целей тебе скрытое поле? Чтобы получить выбранные значение обращайся на прямую

На сайте компонент отвечающий за теги понимает при вводе только: <input value="Событие1,Событие2">
вот и приходиться использовать скрытый input

ramon149 22.07.2016 09:56

Всем, спасибо! все работает как надо :)


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