Firefox는 selected = "selected"옵션을 무시합니다.


112

드롭 다운을 변경하고 페이지를 새로 고치면 Firefox가 선택한 속성을 무시하는 것처럼 보입니다.

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

실제로 이전에 선택한 옵션이 선택됩니다 (새로 고침 전). 드롭 다운에서 다른 것을 변경하는 이벤트가 트리거되기 때문에 이것은 결국 문제가됩니다. 파이어 폭스가이 동작을 멈추게하는 방법이 있습니까 (페이지가로드 될 때 다른 이벤트를 발생시키는 것 외에)?


난 지금이 문제에 직면하고 내가 그것을 사용하여 수정$('option:selected').each(function(){ $(this).prop('selected',true); });
plonknimbuzz

이름 속성이없는 요소를 선택하는 경우에만 이런 일이 발생한다는 것을 알았습니다
Tlacaelel Ramon Luis

3
"OFF"= 자동 완성을 시도
hemanjosko

답변:


5

AFAIK,이 동작은 Firefox에 하드 코딩됩니다.

defaultValue페이지로드시 각 양식 요소를 설정할 수 있습니다.


1
양식 내의 모든 요소에 대해이 작업을 쉽게 수행 할 수 있습니까?
monkey-wrench

jQuery를 사용하는 @monkey, (unested $(":input").val(this[0].defaultValue);); 일반 JS에서, 각 불구하고 산책document.getElementsByTagname("select")
페카

이상적인 솔루션은 아니지만이 방법은 작동합니다. getAttribute ( "selected") 확인을해야합니다.
monkey-wrench

8
참고로-Marco Demaio에 의해 아래에 훨씬 더 나은 답변이 있습니다
jonlink dec

281

autocomplete="off"모든 선택 태그에 HTML 속성을 추가 하십시오. (출처 : https://stackoverflow.com/a/8258154/260080 )

이것은 FireFox의 ODD 동작을 수정합니다.


7
이것이 내가 선호하는 것입니다 (마르코와 몽키 렌치에게 감사하고 거기에 머리카락 몇 덩어리를 저장했습니다). 또한 "value"또는 "checked"속성이있는 모든 <input> 및 내용이있는 <textarea>에 추가해야합니다.
Swanny 2013 년

22
이것은 확실히 정답이어야합니다. 매력처럼 작동합니다.
Andrew Senner 2013-06-02

1
이것은 W3C 유효하지 않습니다
호세 드 Gouveia의

1
Windows, Firefox 버전 44.0 (2016-Jan)에서 동일한 문제가 발생했습니다. 그리고이 솔루션은 여전히 ​​작동합니다.
Steven

1
firefox 47.0에서 매력처럼 작동합니다.
Blackecho

72

파이어 폭스에서, 폼에 이름 속성이있는 폼 안에 select를 배치하지 않으면 "selected"속성이 작동하지 않는다는 것을 알았습니다.


3
BAM! autocomplete = "off"가 그렇지 않은 곳에서 수정되었습니다.
little_birdie nov.

Firefox 78.0.2로 한 시간 동안 머리를 긁적입니다. 내 양식에 이름이 필요하지 않았지만 이름을 주면 안심이되었습니다.
betakilo

11

방금 같은 문제가 발생했습니다.이 멍청한 파이어 폭스 동작으로 고생하는 데 10 시간 이상이 걸렸다 고 믿으세요. 7 개의 드롭 다운이 있습니다. 각 드롭 다운은 이벤트를 트리거하고 24 개의 숨겨진 입력을 채울 것입니다. 따라서 올바른 옵션을 선택하는 것을 상상할 수 있습니다. 24 개의 잘못된 입력 값 !!! 내가 마침내 찾은 해결책은 다음 코드 줄을 추가하는 Javascript로 양식을 재설정하는 것입니다.

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

추신 : 입력은 데이터베이스에서 가져온 값을 가지고 있으므로 양식을 재설정하면 값이 비어 있지 않지만 어떤 방식으로 파이어 폭스에게 selected = selected 옵션으로 돌아가라고 지시합니다!


이것이 정답입니다. "autocomplete"는 W3에 따라 선택 필드에 대해 유효한 속성이 아니기 때문에 select 요소에 "autocomplete"를 사용하라는 대답은 잘못되었으며 "Attribute autocomplete not allowed on element select at this point"가 발생합니다. 유효성 검사 오류.
스콧


5

autocomplete선택 입력의 속성 을 비활성화 하십시오 ... 때로는 브라우저 select가 그 때문에 무시 합니다.


3

FF 25.0.1을 사용하고 있습니다.

무시 selected=""하고 selected="selected".

그러나 단순히 시도 selected하면 옵션이 선택됩니다.

이상한 (비 순응적인) 동작. selected유효한 HTML5이고 가장 짧은 형식이라는 것을 알고 있지만 일반적으로 올바른 형식의 XML을 확인하는 코드를 작성하므로 모든 XML 유효성 검사 도구를 사용하여 매우 엄격한 방식으로 결과를 확인할 수 있습니다 (데이터 교환이 매우 쉽습니다 .. .)

W3C에 따르면 이러한 변형은 부울 속성에서 유효해야합니다.

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

마지막 (xml 준수가 아님) 변형만큼 짧지 만 XHTML5와 HTML5 모두 유효성을 검사해야하므로 첫 번째를 선호합니다. 그래서 나는 Mozilla가 그것을 고칠 것입니다!


3

.attr () 대신 .prop () 사용

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' );

사용 .prop('selected', true);또는 .prop('selected', false);(jQuery를)는 파이어 폭스와 크롬 모두 / 비활성화 작업을 가능하게 할 수 있습니다.
JimB

2

.reset()페이지를 새로 고치기 전에 양식을 호출 할 수 있습니다.


2

선택을 양식 속성으로 묶으면 작동합니다.

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

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

2

이름으로 더 나은 = >>

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

선택은 선택한 속성을 사용합니다.


1

Mozilla의 버그 일 수 있지만 드롭 다운에 이름을 지정해보세요.


1

자동 완성 기능도 작동하지 않았습니다.

이것은 내가 사용하는 jquery로 작성된 javscript 수정입니다.

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

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

이 경우 이것은 Chrome과 Firefox 모두에서 작동했습니다.

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

나는 .attr()대신 사용하고 있었다.prop()


1

드롭 다운의 첫 번째 항목을 표시하려면 ProjectName.ClearSelection();

모든 브라우저에서 작동하도록 디자인 페이지에 줄을 배치하고 페이지로드시 코드 뒤에이 코드를 추가합니다.

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

0

선택을 변경하고 페이지를 새로 고치면 firefox가 양식의 변경 사항을 복원하므로 선택이 작동하지 않는 것처럼 느껴집니다. 새로 고침하는 대신 새 탭에서 링크를 열어보세요.


이것은 사실이지만 내 문제를 해결하지 못하는 것 같습니다. 파이어 폭스가 새로 고침을 수행 할 때 양식의 변경 사항을 복원 할 때 onchange 이벤트가 발생하지 않기 때문에 여전히 해결 방법이 필요합니다.
monkey-wrench

0

이것이 내 해결책입니다.

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;
}

나는 그것을 페이지 상단에 (적절한 ID 세트로) 놓았고 그것은 나를 위해 작동합니다. 페이지의 모든 선택 항목에 대한 루프로 getElementById를 대체하여 독자를위한 연습으로 남겨 둡니다.).


0

나를 위해 위의 솔루션 중 어느 것도 작동하지 않았습니다. 아무것도 설정되지 않은 경우 명시 적으로 선택을 설정해야했습니다.

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

나는 파이어 폭스가 이것을 고쳤 으면 좋겠다 :(


0

직장에서 선택 상자 옵션이 동일한 웹 페이지의 Chrome에서는 제대로 표시되지만 Firefox에서는 표시되지 않는 버그를 수정했습니다. 위의 문제와는 완전히 다른 것으로 판명되었지만 현재 겪고있는 문제 일 수 있습니다.

Chrome에서 선택 상자 글꼴 색상은 검정색이었습니다. Firefox에서 어떤 이유로 선택 상자는 컨테이너에서 글꼴 색상을 상속 받았습니다. 선택 상자 글꼴 색상을 검정색으로 강제하는 CSS 규칙을 추가하면 값 세트가 제대로 표시되었습니다.


0

나를 위해 작품 autocomplete="off"내부에 배치 하지도 않습니다 form.

어떤 일을하는 것은 선택된 속성 사용하는 것이었다 아니오 "값"와 같은을 :

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

그래서 그것은 렌더링 <option selected>...</option>하거나<option>...</option>

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.