Tworzę select rozwijaną w locie za pomocą PHP, aby uzyskać dane i zbudować opcje. Wtedy używam AJAX, aby sprowadzić to (z następującymi liniami) i przedstawić dodatkową opcję.

Wszystko to działa zgodnie z przeznaczeniem, mój jedyny problem polega na tym, że w rozwijanej opcji zawsze wybiera drugą opcję, która jest pierwsza z mojego połączenia PHP / AJAX, ale nie opcja, którą przygotowuję przed tym.

Próbowałem też zmienić selected do selected='selected', ale to nie ma znaczenia.

Co robię źle?

Uwaga: Używam tego wewnątrz modalnego bootstrap 3.

mój JS (skrócony):

var levelMain = $(this).closest('tr').find('.levelMain').text();
// ...
$.ajax({
    url: 'ajax.php?node=fetchNav1',
    cache: false,
    error:function(err) {
        alert(err.statusText);
    },
    success:function(html) {
        $('#divLevelMain').html(html);
        $("#levelMain").prepend("<option value='' selected>" + levelMain + "</option>");
    }
});

Wybór jest standardowym wyborem HTML, który wygląda następująco:

<select class="form-control" id="levelMain">
    <option value="some value">some text</option>
    // ...
</select>
0
user2571510 15 sierpień 2014, 22:07

2 odpowiedzi

Najlepsza odpowiedź

Powinien być bardzo łatwy do aktualizacji selectedIndex elementu {x1}} z następującymi:

success:function(html) {
    $('#divLevelMain').html(html);
    $("#levelMain").prepend("<option value=''>" + levelMain + "</option>");
    $("#levelMain")[0].selectedIndex = 0;
}
1
Greg 15 sierpień 2014, 19:24

Czy upewniasz się, że zdobędziesz wszystkie inne opcje w tym zaznaczeniu?

$('#levelMain').children('option').removeAttr('selected');
$('$levelMain').prepend("<option...</option>");

Możesz to być, że należy dodać wybrany atrybut po dołączeniu, aby upewnić się, że jest prawidłowo aktualizowany

var element = $("<option...</option>");
$('$levelMain').prepend(element);
$('#levelMain').children('option').removeAttr('selected');
element.attr('selected','selected');

Przyczyna Przeglądarka zostanie domyślna do pierwszej wybranej wybranej, a następnie, gdy przedstawisz, pozostanie wybrany w ten sposób drugi zostanie wybrany raczej pierwszy niż pierwszy.

1
Rolyataylor2 15 sierpień 2014, 18:12