JQuery: пытается установить опцию выбора - PullRequest
0 голосов
/ 18 февраля 2011

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

<div id="addRecordForm">
    <h2 class='uiblocktitle'>Add Record</h2>
    <p class="forminstructions">All entries are required</p>
    <form id="userform">
        <p class="label">Date:</p><p><?php print $_SESSION['longdateform']; ?></p>
        <p class="label"><label for="departments" class="bodylabel">Department:</label></p>
        <p>
            <select id="departments" name="departments">
                <option value="null">Select A Department</option>";

                <?php 
                    $query = "SELECT * FROM departments";
                    $results = $db->getResults($query);

                    while($row = mysql_fetch_array($results)){
                        if (count($results) > 0) { 
                            //get department and id
                            $department = $row['department'];
                            $deptID = $row['id'];

                            print "<option value=\"" . $deptID . "\">" . $department . "</option>";
                         }
                    }
                ?>

            </select></p>

Затем я пытаюсь установить выбранную опцию на основе некоторых пользовательских данных.

//get user department
$.ajax({
    type: "POST",
    url: "lib/includes/getUserDepartment.php",
    data: "empname=" + empname,
    success: function(data){
        $("#addRecordForm").slideDown('fast');
        $('#departments').val(data).change();
    }
});

данные var возвращаются правильно и соответствуют одному из значений в раскрывающемся списке, они оба извлекаются из одного поля одной и той же таблицы базы данных, поэтому написание не является проблемой,По какой-то причине я не могу выбрать выбранное для правильной опции.Я даже пытался жестко кодировать значения без удачи.Я пробовал варианты $ ("# департаменты"). Val (), используя индекс опций и т. Д., Нада.Что я делаю неправильно?Спасибо.

Ответы [ 2 ]

2 голосов
/ 18 февраля 2011

Если вы делаете это с параметром value (не его индекс, не его текст), он должен работать.Пример:

HTML:

<select id='theSelect'>
    <option value='val1'>Item 1</option>
    <option value='val2'>Item 2</option>
    <option value='val3'>Item 31</option>
    <option value='val4'>Item 4</option>
    <option value='val5'>Item 5</option>
</select>

JavaScript:

$("#theSelect").val("val4");

Живая копия

Или с changeобработчик, на случай, если у вас возникли проблемы:

$("#theSelect")
  .change(function() {
    $("<p>Changed!</p>").appendTo(document.body);
  })
  .val("val4")
  .change();

Live copy

1 голос
/ 18 февраля 2011

Вы должны использовать идентификатор отдела ($row['id'] в вашем примере кода PHP), чтобы установить выбранную опцию в своем выборе, поскольку это то, что вы задали для атрибута опции value.

$('#departments').val('null');
Например,

выберет опцию «Выбрать отдел». Я создал для вас jsfiddle пример , который иллюстрирует это.

В вашем примере также есть паразит ";, сразу после закрывающего тега </option> вашего нулевого параметра «Выбрать отдел».

Вы не поделились кодом для getUserDepartment.php в своем примере, поэтому я не могу проверить, действительно ли этот метод возвращает идентификатор строки, а не столбец строки department.

...