2016-08-24 3 views
0

Я весь день пытался найти ответ, и я просто сдался. Вот моя проблема, надеюсь, вы можете мне помочь:Отправить по умолчанию Select2 с сообщением

Мне нужно пройти несколько выборов от Select2 до Post. До сих пор у меня нет проблем, если я выбираю их один за другим в параметрах Select2, я нажимаю кнопку «Отправить», и все идет так, как должно.

Дело в том, когда страница загружается: я могу увидеть значение по умолчанию с последними сохраненными параметрами, но если я нажму кнопку «Отправить», не выбирая ничего из списка, я ожидаю, что одно и то же значение будет передано снова через Post метод, но нет ... Он идет пустым, стирая последнюю сохраненную опцию.

Другими словами, единственный способ, которым это работает, - это когда я выбираю вариант (или несколько параметров) каждый раз, потому что, если я этого не делаю, опция по умолчанию не отправляется.

Here's пример моего кода, так что вы можете проверить его и дать мне руку:

..... 
<title>page1</title> 
<script type="text/javascript"> 
    $(document).ready(function(){ 
     $(".myselect").select2(); 
    }); 
</script> 
</head> 
<body> 
<?php 
$previouschoice="This is one This is two"; //this variable is populated with a mysqli query. 
?> 
<form method="post" action="page2.php"> 
      <select id="test" class="myselect" name="mychoices[]" multiple="multiple"> 
       <option value="<?php echo $previouschoice;?>" selected="selected"><?php echo $previouschoice;?></option> 
       <option value="This is one">This is one</option> 
       <option value="This is two">This is two</option> 
       <option value="This is three">This is three</option> 
      </select> 
</form> 
</body> 

На page2.php хранить значение Post в базу данных MySQL для последующего поиска, захвата и конкатенации данные в одной переменной, например:

$mypost =$_POST['mychoices']; 
foreach ($mypost as $a) { 
    $mychoices=$mychoices.' '.$a; 
} 

Так $mychoices в конечном итоге будет $previouschoice назад на page1.php

Также попробовал initSelection, предложенный в других сообщениях, с тем же выходом. Сделал следующее:

$(".myselect").select2().select2("val", null); 
    $('#test').val('<?php echo $previouschoice;?>').trigger('change'); 

Помогите!

+0

Я не понимаю, что ваша проблема вы можете иметь еще одну попытку в объяснении – RiggsFolly

+0

я хотел бы начать с изменения 'Name =«mychoices []»' в 'Name =«mychoices»', как я думаю, что будет создавайте массив внутри массива, который может сбивать с толку. – RiggsFolly

+0

Но если вы хотите узнать, что вы получили в массиве $ _POST, добавьте 'print_r ($ _ POST);' к вашему коду, и он будет автоматически сбрасывать массив для чтения формата – RiggsFolly

ответ

0

Я не уверен, что полностью понимаю вашу проблему, но я сделаю это.

  1. Вы можете выбрать несколько элементов из списка, отправить и получить подтверждение.
  2. Вы можете прочитать предыдущие варианты, когда страница перезагрузится
  3. Повторная отправка «забывает» выбор, если вы снова не выбираете тот же выбор.

Если это работает для вас, навсегда вариант, я хотел бы добавить что-то вроде

<?php if(in_Array("This is one", $previousChoice) echo "selected"> 

Где бы вы заменить «Это один», где это необходимо. Это предполагает, что $ previousChoice - это массив, конечно.

Таким образом, параметры, которые вы выбрали в первую очередь, будут автоматически переустановлены и должны переноситься, если вы снова отправите форму.

Wayne

+0

$ previousChoice - это не массив, его строка, содержащая комбинацию из нескольких предыдущих вариантов, поэтому он как новый вариант для списка Select2. – azirion

Смежные вопросы