2015-08-05 3 views
1

Я использую Select2 для моего варианта выпадающего списка. Я заполняю его в виде таблицы с данными MySQL, и форма находится внутри загрузочного модуля Modal вместе с кнопкой для редактирования или удаления.Select2 - неверное выбранное значение с данными mysql

<div class="btn-group"> 
    <a class="btn btn-primary" href="#"><i class="fa fa-home"></i> Area</a> 
    <a class="btn btn-primary dropdown-toggle" data-toggle="dropdown" href="#"> 
     <span class="fa fa-caret-down"></span></a> 
     <ul class="dropdown-menu"> 
     <?php 
     echo "<li><a class=\"open-EditRow\" data-areano=\"".$areano."\" data-area=\"".$area."\" data-centerno=\"".$centerno."\" title=\"Edit this row\" \"><i class=\"fa fa-pencil\"></i> Edit</a></li>"; 
     echo "<li><a class=\"open-DeleteRow\" data-areano=\"".$areano."\" data-area=\"".$area."\" data-centerno=\"".$centerno."\" title=\"Delete this row\" \"><i class=\"fa fa-trash\"></i> Delete</a></li>"; 
     ?> 
     </ul> 
</div> 

Затем кнопка «Редактировать» откроет Modal для редактирования деталей.

<div class="form-group"> 
    <label class="col-sm-3 control-label">Center</label> 
    <div class="col-sm-5"> 
    <?php       
    $e = mysql_query("select * from center") or die(mysql_error()); 
    ?> 
    <select class="populate placeholder" name="center" id="center"> 
     <option value="">-- Select a center --</option> 
     <?php 
     while($f=mysql_fetch_array($e)) 
     { 
      ?> 
      <option value="<?php echo $f['center_no']; ?>" <?php if ($f['center_no']==$centerno) { ?>selected<?php } ?>><?php echo $f['center']; ?></option> 
      <?php 
     } 
     ?> 
    </select> 
    </div> 
</div> 

Это, как я передать данные в Modal:

$('.open-EditRow').click(function(){ 
    var areano = $(this).attr('data-areano'); 
    var area = $(this).attr('data-area'); 
    var centerno = $(this).attr('data-centerno'); 
    $('#myModal #areano').val(areano); 
    $('#myModal #area').val(area); 
    $('#myModal #center').val(centerno); 
    $('#myModal').modal('show'); 
}); 

И код Выбор2:

function DemoSelect2(){ 
    $('#center').select2(); 
} 

Но Выбор2 отображает неверную выбранное значение. Он отображает первый элемент, сгенерированный запросом, вместо выбранного значения.

enter image description here

Но при нажатии на раскрывающийся список Select2, выбранный элемент будет выделен правильно.

enter image description here

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

+0

Можете ли вы расширить свой вопрос, чтобы также включить фрагмент HTML-кода, который генерируется? Проблема может быть в HTML, но также может случиться так, что вы не вызываете событие «change» после вызова функции val(). –

ответ

0

Обходной путь, который я сделал для этого, и он как-то сработал, - это сначала удалить оператор if, который использовался для сравнения данных. Так что мой вариант просто выглядел следующим образом:

<option value="<?php echo $f['center_no']; ?>"><?php echo $f['center']; ?></option> 

А потом я объявил выбранное значение на function DemoSelect2()

function DemoSelect2(){ 
    var centerno = $(this).attr('data-centerno'); 
    $('#center').select2("val", centerno); 
} 

Теперь мой Выбор2 выпадающий выглядел следующим образом:

enter image description here

После нажатия выпадающего меню оно подсвечивало правильное выбранное значение:

enter image description here

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

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