2016-09-22 1 views
1

Я пытаюсь получить значение, которое я сохранил в базе данных, и показать его в поле выбора. Элементы в поле выбора заполняются из базы данных.Установить/показать выбранное/сохраненное значение (из базы данных) в поле выбора для редактирования

<select id="sel2" name="sel2"> 
    <option value="">---</option> 
    <?php 
     require("connection.php"); 

     $res = mysqli_query($conn, "SELECT field FROM table"); 
     while($row = $res->fetch_assoc()){ 
      echo "<option value='".$row['field']."'>'".$row['field']."'</option>"; 
     } 
    ?> 
</select> 

Теперь, когда я пытаюсь сделать это,

$('#btn2').click(function(){ 
    var x = "field1"; 
    $('#sel2').val(x); 
}); 

значение х не отображается в окне выбора. Но когда элементы не являются выборкой из базы данных, например,

<select id="sel2" name="sel2"> 
    <option value="">---</option> 
    <option value="field1">field1</option> 
    <option value="field2">field2</option> 
    <option value="field3">field3</option> 
</select> 

jquery works.

Я не знаю, чего здесь не хватает. Не могли бы вы мне помочь. Как установить выбранное значение (полученное из базы данных, которая была выбрана до) в поле «Выбор», когда элементы были заполнены из базы данных?

Я извлекаю элементы из окна выбора из базы данных, потому что их слишком много. Пожалуйста помоги.

ответ

1

Проблема заключается в том, что код JQuery это выполняется непосредственно перед поля выбираются из базы данных. Таким образом, оператор $('#sel2').val(x); не может установить значение x, потому что в это время в выпадающем списке выберите поле x.

Если вы не уверены, попробуйте использовать тайм-аут в функции jquery click, чтобы проверить, верно ли то, что я сказал, или нет.

Сообщите мне, если это сработает.

+0

Привет Harshil, я получил представление, но это не похоже на работу. setTimeout (function() {$ ('# sel2'). val (x);}); внутри функции щелчка. Ну, фактическое значение x будет поступать из возвращаемых данных вызова ajax. – MDB

+0

Я имею в виду setTimeout (function() {$ ('# sel2'). Val (x);}, 2000); Это не сработало для меня. – MDB

+0

Поместите код jquery в обратный вызов функции вызова ajax –

0

Попробуйте использовать это и кажется, что у вас есть дополнительные одиночные кавычки

echo "<option value='".$row['field']."'>".$row['field']."</option>"; 
0

Попробуйте это ..

$('#btn2').click(function(){ 
    var x = 'field1'; 
    $("#sel2").val(x); 
    $("#sel2").trigger("chosen:updated"); 
}); 
+0

Привет, на самом деле значение x здесь будет поступать из возвращаемых данных вызова ajax. Где я должен поставить .trigger? А что «выбрано: обновлено»? Благодарю. – MDB

+0

jQuery.ajax ({ \t успех: функция (данные) { \t \t // ЗДЕСЬ ВЫ ДОЛЖНЫ СДЕЛАТЬ ЧТО \t} }); –