program tip

라디오 버튼 "Checked"속성이 작동하지 않음

radiobox 2020. 11. 20. 08:51
반응형

라디오 버튼 "Checked"속성이 작동하지 않음


라디오 버튼은 checked기본적으로 표시되지 않습니다 . 매우 간단한 js 유효성 검사를 수행하는 기본 선택없이 시작했지만 작동하지 않았습니다. 그래서 나는 그것을 알아 내고 이상한 일이 일어나고 있음을 발견 할 때까지 기본값을 사용하기로 결정했습니다.

마크 업이 유효하고 FF, Safari 및 Chrome에서 시도했습니다. 아무것도 작동하지 않습니다.

jQuery호출 스크립트를 제거하면 문제가 사라지기 때문에 라이브러리 와의 충돌이라고 생각합니다 .

<label>Do you want to accept American Express?</label> Yes
<input id="amex" style="width: 20px;" type='radio' name='Contact0_AmericanExpress' value='1' /> No
<input style="width: 20px;" type='radio' name='Contact0_AmericanExpress' class='check' value='0' checked="checked" />


확인 된 속성을 가진 동일한 이름이 여러 개인 경우 페이지에서 마지막으로 확인 된 라디오를 사용합니다.

<form>
    <label>Do you want to accept American Express?</label>
    Yes<input id="amex" style="width: 20px;" type="radio" name="Contact0_AmericanExpress"  />  
    maybe<input id="amex" style="width: 20px;" type="radio" name="Contact0_AmericanExpress"  checked="checked" />  
    No<input style="width: 20px;" type="radio" name="Contact0_AmericanExpress" class="check" checked="checked" />
</form>


다음과 같을 수 있습니다.

jQuery 1.9.1의 라디오 버튼에 버그가 있습니까?

요컨대 : 라디오 버튼을 확인하기 위해 attr () 대신 prop ()을 사용하지 마십시오. 세상에 JS가 싫어 ...


라디오 입력이 '체크 됨'이 작동하려면 양식 내에 있어야합니다.


이 성가신 문제에 대한 궁극적 인 JavaScript 해결 방법-

jQuery 명령을 setTimeout. 간격은 매우 작을 수 있으며 10밀리 초를 사용 하며 잘 작동하는 것 같습니다. 지연이 너무 작아서 최종 사용자가 거의 감지 할 수 없습니다.

setTimeout(function(){
  $("#radio-element").attr('checked','checked');
},10);

이것은 또한 작동합니다

  • $("#radio-element").trigger('click');
  • $("#radio-element").attr('checked',true);
  • $("#radio-element").attr('checked',ANYTHING_THAT_IS_NOT_FALSE);

Hacky ... hacky ... hacky ... hacky ... 예 알아요 ... 따라서 이것은 해결 방법입니다 ....


아약스 생성 페이지에서 비슷한 문제에 직면했습니다. FF에서 Webdeveloper 플러그인을 사용하여 생성 된 소스를 가져 와서 양식의 모든 입력을 확인한 결과 숨겨진 div (display : none) 안에 또 다른 확인란이 있음을 알았습니다. 같은 아이디로 두 번째 체크 박스의 아이디를 변경하면 동작이 시작됩니다 .. 시도해보고 결과를 알려주세요 .. 건배


코드를 http://jsfiddle.net/fY4F9/에 복사했습니다.

기본적으로 아니오가 선택됩니다. 라디오 박스에 영향을주는 자바 스크립트가 실행되고 있습니까?


jQuery 문서는 속성 대 속성에 대한 자세한 설명을checked 제공 합니다 .

따라서 선택한 라디오 버튼 값을 검색하는 또 다른 방법이 있습니다.

var accepted = $('input[name="Contact0_AmericanExpress"]:checked').val();

안녕하세요 두 번째 입력에 id 속성을 넣고 고유 한 ID 값을 제공하면 작동 할 것이라고 생각합니다.

<label>Do you want to accept American Express?</label>
Yes<input id="amex" style="width: 20px;" type='radio' name='Contact0_AmericanExpress'   value='1'/>  
No<input style="width: 20px;" id="amex0" type='radio' name='Contact0_AmericanExpress' class='check' value='0' checked="checked"/>

코드가 맞습니다. JQuery 스크립트를 디버깅하여 문제를 찾으십시오! FF를 사용하는 경우 JS (및 JQuery)를 디버그하는 확장을 설치할 수 있습니다. FireBug라고합니다.


input다음과 같이 두 그룹의 입력에 대해 태그 이름을 동일하게 설정하여이를 재현 할 수 있습니다.

<body>
  <div>
      <div>
        <h3>Header1</h3>
      </div>
      <div>
          <input type="radio" name="gender" id="male_1" value="male"> Male<br>
          <input type="radio" name="gender" id="female_1" value="female" checked="checked"> Female<br>
          <input type="submit" value="Submit">
      </div>
  </div>


  <div>
      <div>
        <h3>Header2</h3>
      </div>
      <div>
          <input type="radio" name="gender" id="male_2" value="male"> Male<br>
          <input type="radio" name="gender" id="female_2" value="female" checked="checked"> Female<br>
          <input type="submit" value="Submit">
      </div>
  </div>
</body>

(이 실행을 보려면 여기를 클릭 하십시오 )

다음 두 가지 솔루션 모두 문제를 해결합니다.

  1. 두 번째 그룹의 입력에 다른 이름을 사용하십시오.
  2. 그룹 중 하나에 form태그 대신 div태그를 사용 합니다 (이 방법으로 문제가 해결되는 실제 이유를 알 수 없습니다. 이에 대한 의견을 듣고 싶습니다!)

**Radio button aria-checked: true or false one at a time**

$('input:radio[name=anynameofinput]').change(function() {
            if (this.value === 'value1') {
                $("#id1").attr("aria-checked","true");
                $("#id2").attr("aria-checked","false");
            }
            else if (this.value === 'value2') {;
                $("#id2").attr("aria-checked","true");
                $("#id1").attr("aria-checked","false");
            }
   });


기본적으로 체크 할 각 라디오에 체크 된 속성을 추가하기 만하면됩니다.

이 시도 :

<input style="width: 20px;" type="radio" name="Contact0_AmericanExpress" class="check" checked/>

비표준 xhtml 코드를 사용하고 있습니다 (값은 작은 따옴표가 아니라 큰 따옴표로 묶어야합니다).

이 시도:

<form>
  <label>Do you want to accept American Express?</label>
  Yes<input id="amex" style="width: 20px;" type="radio" name="Contact0_AmericanExpress"  />  
  No<input style="width: 20px;" type="radio" name="Contact0_AmericanExpress" class="check" checked="checked" />
</form>

참고 URL : https://stackoverflow.com/questions/3606657/radio-buttons-checked-attribute-not-working

반응형