Firefox, seçili seçeneği yok sayar = "seçildi"


112

Bir açılır listeyi değiştirir ve sayfayı yenilerseniz, Firefox seçili özelliği görmezden geliyor gibi görünüyor.

<option selected="selected" value="Test">Test</option>

Aslında daha önce seçmiş olduğunuz seçeneği seçecektir (yenilemeden önce). Açılır menüde tetiklenen ve diğer şeyleri değiştiren bir olay olduğu için bu benim için bir sorun haline geliyor. Firefox'un bu davranışı durdurmasını sağlamanın bir yolu var mı (sayfa yüklendiğinde başka bir olayı tetiklemekten başka)?


şimdi bu sorunla karşılaşıyorum ve kullanarak $('option:selected').each(function(){ $(this).prop('selected',true); });
düzeltiyorum

Bunun yalnızca bir ad özelliği olmayan öğelerin
seçildiğini

3
autocomplete'i dene = "kapalı"
hemanjosko

Yanıtlar:


5

AFAIK, bu davranış Firefox'ta sabit kodlanmıştır.

Her form öğesini defaultValuesayfa yüklemesine ayarlamayı deneyebilirsiniz .


1
Formdaki tüm öğeler için bunu yapmak kolay mıydı?
İngiliz anahtarı

@monkey jQuery kullanıyor, $(":input").val(this[0].defaultValue);(denenmemiş) gibi bir şey olmalı ; normal JS'de, her birinden yürüyündocument.getElementsByTagname("select")
Pekka

İdeal çözüm olmasa da, bu işe yarıyor .. getAttribute ("seçilmiş") üzerinde bir kontrol yapmanız gerekiyor
monkey-wrench

8
Bilginize - Aşağıda Marco Demaio'dan çok daha iyi bir cevap var
jonlink

282

autocomplete="off"Her seçilen etikete HTML niteliği ekleyin . (kaynak: https://stackoverflow.com/a/8258154/260080 )

Bu, FireFox'taki ODD davranışını düzeltir.


7
Bu benim tercihim (çok teşekkürler Marco ve İngiliz anahtarı, orada saçımdan birkaç parça kurtardı). Ayrıca, "değer" veya "işaretli" özniteliği olan her <input> 'a ve içeriğe sahip herhangi bir <textarea> alanına eklemeniz gerekecektir.
Swanny

22
Bu kesinlikle doğru cevap olmalıdır. Tıkır tıkır çalışıyor.
Andrew Senner

1
bu geçerli bir w3c değil
Jose De Gouveia

1
Windows'ta da aynı sorunu yaşadım, Firefox ver 44.0 (2016-Ocak). Ve bu çözüm hala çalışıyor.
Steven

1
Firefox 47.0'da bir cazibe gibi çalışır.
Blackecho

72

Firefox'ta, "seçili" özniteliğinin, formun ad özniteliğine sahip olduğu bir formun içine seçimi yerleştirmediğiniz sürece çalışmayacağını fark ettim.


3
BAM! Bu, autocomplete = "off" 'un olmadığı yerde düzeltildi.
little_birdie

Firefox 78.0.2 ile kafamı kaşıyarak bir saat geçirdim. Formumda bir isme ihtiyacım yoktu ama bir tane vermek rahatlık sağladı.
betakilo

11

Sadece aynı sorunu yaşadım, inanın bana bu aptal firefox davranışıyla 10 saatten fazla uğraşıyorum, 7 açılır listem var, her biri bir olayı tetikleyecek ve 24 gizli girişi dolduracak, böylece doğru seçeneğin seçildiğini hayal edebilirsiniz. 24 yanlış giriş değeri !!! Nihayet bulduğum çözüm, Javascript'in bu kod satırını ekleyerek formu sıfırlamak:

window.onload = function() { document.forms['MarkerForm'].reset(); };

Not: girişler bir veritabanından alınan değerlere sahiptir, bu nedenle formu sıfırlamak herhangi bir değeri boşaltmaz, ancak bir şekilde firefox'a cehennemden seçili = seçilen seçeneğe geri dönmesini söyler!


Bu doğru cevap. Bir seçme öğesinde "otomatik tamamlama" kullanmayı söyleyen yanıtlar yanlıştır çünkü "otomatik tamamlama", W3'e göre bir seçme alanı için geçerli bir öznitelik DEĞİLDİR ve "Öznitelik otomatik tamamlamaya bu noktada öğe seçiminde izin verilmiyor" a neden olacaktır. doğrulama hataları.
Scott


5

autocompleteSelect input özniteliğini devre dışı bırakmayı deneyin ... bazen tarayıcı selectbu nedenle yoksayar


3

FF 25.0.1 kullanıyorum

Görmezden geliyor selected=""veselected="selected" .

Ama sadece denersem selectedseçenek seçilir.

Garip (uyumsuz) davranış. selectedHTML5'in geçerli olduğunu ve en kısa biçim olduğunu biliyorum , ancak genellikle iyi biçimlendirilmiş XML'i de doğrulayan bir kod yazıyorum, böylece sonuçlarımı çok katı bir şekilde kontrol etmek için herhangi bir XML doğrulama aracını kullanabilirim (ve veri alışverişi çok kolaydır .. .)

W3C'ye göre, bu değişkenler boole özelliklerinde geçerli olmalıdır:

HTML5:  boolAttr="" | boolAttr="boolAttr" | boolAttr
XHTML5: boolAttr="" | boolAttr="boolAttr"

İlkini tercih ediyorum, çünkü neredeyse son (xml uyumlu değil) varyant kadar kısa ama hem XHTML5 hem de HTML5 olarak doğrulamalıyım. Umarım Mozilla bunu düzeltir!


3

.attr () yerine .prop () kullanın

This does not work in firefox.
  $( 'option[value="myVal"]' ).attr( 'selected', 'selected' );
use this one
  $( 'option[value="myVal"]' ).prop( 'selected', 'selected' );

In other way
  $( this ).prop( 'selected', 'selected' );

Etkinleştirmek / devre dışı bırakmak için .prop('selected', true);veya .prop('selected', false);(jQuery) kullanmak hem Firefox hem de Chrome için çalışır.
JimB

2

.reset()Sayfayı yenilemeden önce formu arayabilirsiniz .


2

Seçimi form özniteliğine ekleyin ve çalışacaktır.

<!-- will not work in firefox -->
<option selected="selected" value="Test">Test</option>

ve

<!-- this will work in firefox -->
<form>
 <option selected="selected" value="Test">Test</option>
</form>

2

İsmiyle daha iyi = >>

form id="UMForm" name="UMForm" class="form"

Seçim, seçilen özniteliği alacak


1

Mozilla'da bir hata olabilir, ancak açılır menüye bir ad vermeyi deneyin.


1

otomatik tamamlama da benim için çalışmıyordu.

Bu, kullandığım jquery ile yazılmış javscript düzeltmesidir:

$('input[type="radio"][selected]').click();

1
<option selected="selected" value="Test">Test</option>

Bu durumda bu hem Chrome hem de Firefox için işe yaradı.

$('option[value="Test"]').prop('selected', true);

Ben kullanıyordum .attr()yerine.prop()


1

Açılır listenin ilk öğesini göstermek için şunu kullanın: ProjectName.ClearSelection();

Tüm tarayıcılarda çalışması için tasarım sayfanıza satırlar ekleyin Ve ayrıca bunu sayfa yüklemesinin arkasındaki koda koyun.

$(document).ready(function () {
    $("#content_ProjectName option[value='1']").prop("selected", true);
});

0

Seçimi değiştirirseniz ve sayfayı yenilerseniz, firefox değişikliklerinizi formda geri yükleyecektir, bu nedenle seçimin çalışmadığını düşünüyorsunuz. Yenilemek yerine, bağlantıyı yeni bir sekmede açmayı deneyin.


Bu doğru, ancak sorunumu çözmüyor gibi görünüyor. Bir yenileme yaptığımda, firefox formdaki herhangi bir değişikliği geri yüklediğinde onchange olayım tetiklenmediği için hala bir çözüm bulmaya ihtiyacım var.
İngiliz anahtarı

0

Bu benim çözümüm:

var select = document.getElementById('my_select');
for(var i=0; i < select.options.length; i++){
    select.options[i].selected = select.options[i].attributes.selected != undefined;
}

Bunu sadece sayfanın en üstüne koydum (uygun kimlik setiyle) ve benim için çalışıyor. GetElementById'i sayfadaki tüm seçimler üzerinde bir döngü ile değiştirmek, okuyucu için bir alıştırma olarak bırakıyorum;).


0

Benim için yukarıdaki çözümlerin hiçbiri işe yaramadı. Hiçbiri ayarlanmadıysa seçimi açıkça ayarlamam gerekiyordu:

if (foo.find(':selected').length === 0) {
    $(foo.find('option')[0]).attr('selected', 'selected');
}

Firefox'un bunu düzeltmesini dilerdim :(


0

İşteyken, aynı web sayfasında seçim kutusu seçeneğinin Chrome'da düzgün görüntülendiği ancak Firefox'ta görüntülenmediği bir hatayı düzelttim. Yukarıdaki sorunlardan tamamen farklı bir şey olduğu ortaya çıktı, ancak muhtemelen yaşadığınız bir sorun olabilir.

Chrome'da, seçim kutusu yazı tipi rengi siyahtı. Firefox'ta bazı nedenlerden dolayı, seçim kutusu yazı tipi rengini kapsayıcıdan devraldı, bu beyazdı. Bu seçim kutusu yazı tipi rengini siyah olmaya zorlamak için bir CSS kuralı ekledikten sonra, ayarlanan değer düzgün bir şekilde görüntülendi.


0

Ne autocomplete="off"ya da içine yerleştirerek formbenim için işler.

İşe yarayan , yalnızca şu şekilde "değer" olmadan seçilen özelliği kullanmaktı :

<option @(Model.Source == TermSource.Instagram ? "selected" : "")>
    Instagram
</option>
<option @(Model.Source == TermSource.Facebook ? "selected" : "")>
    Facebook
</option>

yani ya işliyor <option selected>...</option>ya da sadece<option>...</option>

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.