2012-11-08 11 views
7

Mam wybór za pomocą f.e. 10 opcji ("jeden", "dwa", "trzy", ...). Ładowanie strony Pierwsza opcja "jeden" jest wybrany.Ustawienie wybranej wartości nie ma wpływu na użycie klawiatury.

ciągu funkcji ustawić na piątą opcję

$("myselect").val('five'); 

W rzeczywistości obecnie piąte opcja jest widoczna w select a wartość jest również ustawić poprawne.

Ale teraz zakładam w mojej formie, aż dotrę do tego wyboru. A jeśli teraz używam klawisza na klawiaturze, wybór skacze do opcji "dwa", a nie "sześć".

Jak ustawić wybraną opcję, która działa również przy późniejszym użyciu klawiatury?

+2

Wydaje się, że ma to miejsce tylko w przeglądarce Firefox http://jsfiddle.net/JM2dZ/ – Musa

+0

Działa w przeglądarce Chrome, ale nie Firefox. Nawet kliknięcie menu nie pomaga. –

+1

Oto błąd jQuery z tym samym problemem: http://bugs.jquery.com/ticket/11488 –

Odpowiedz

5

Spróbuj ustawić właściwość selectedIndex. Zobacz poniżej,

$('#myselect').val("5").prop('selectedIndex', 4); 

DEMO:http://jsfiddle.net/kLZ7z/

Innym podejściem jest lepiej czystsze

var nValue = "5"; 
$('option', '#myselect').filter(function() {   
    return this.value == nValue; 
}).prop('selected', true); 

DEMO:http://jsfiddle.net/kLZ7z/2/

0

odgadywanie trochę, ale spróbuj tego:

$('#myselect option').each(function(){ 
    $(this).removeAttr('selected')); 
}); 
$('#myselect option').eq(4).attr('selected', 'selected'); 

To trochę nietestowanego pseudo-kodu, po prostu daje wyobrażenie o tym, co się spróbować.

+1

nie działa (także formularz odpowiedzi Asada nie). - ale to, co właśnie się dowiedziałem - wydaje się, że jest to problem z firefoxem, ponieważ IE i chrome spodziewane są: –

+0

@FabianKnauf: Wypróbuj linię 'removeAttr'. –

1

Jest to błąd Firefox. Jednym z rozwiązań, które znalazłem, jest użycie opcji .prop('selected', true) zamiast używania .val w wyborze.

$('#myselect').children('option[value="five"]').prop('selected', true); 

DEMO: http://jsfiddle.net/JM2dZ/1/

UWAGA: Nie trzeba rozbroić selected na inne opcje pierwszy, spowoduje to rzeczywiście spowodować problem, aby utrzymać się dzieje.

Powiązane problemy