2016-08-17 4 views
0

다음 코드에서 변수 이름을 통해 라디오를 검사 할 때 라디오가 올바른 값을보고하지 않는 이유는 무엇입니까? 그게 원인이 될 수 있도록 mdl 라디오 버튼에서 값 받기

var $myRadio = $('input[type=radio][name=options]:checked'); 

$('#button').click(() => { 
    // this works 
    console.log($('input[type=radio][name=options]:checked').val()); 
    // this doesn't :(
    console.log($myRadio.val()); 
}); 

https://jsfiddle.net/charsi/p4beztwx/13/

나는 mdl 라디오 버튼을 사용하고 있습니다. 나는 또한 $myRadio[0].MaterialRadio.value으로 값을 얻으려고했지만 그 중 하나가 작동하지 않습니다.

EDIT : 이것은 잘못 말한 질문이었고 MDL과 아무런 관련이 없었습니다. 내가 정말로 원했던 것은 값을 확인하기 위해 다시 이름을 선택하지 않고도 라디오 버튼에 DOM 변수를 설정하는 기능이었습니다.

+0

피들이 작동합니다. 콘솔을 확인하십시오. https://jsfiddle.net/bipen/p4beztwx/6/ – bipen

+0

@bipen 그들 중 하나만 올바른 값을보고합니다. 제 질문을 다시 읽어주십시오. – charsi

답변

1

변수 이름을 통해 선택하면 잘못된 값을 가져 오는 이유는 click 이벤트 전에 $myRadio을 설정하기 때문입니다. $myRadio은 문서 대기 상태 (클릭 이벤트 전)로 설정되고 현재는 항상 1 인 선택된 라디오 옵션의 값을 가져옵니다.

클릭 핸들러 내에서 $myRadio으로 이동해야합니다. 왜? 이제 클릭 기능이 호출되면 실제로 라디오의 가치를 얻으므로 (확인 됨) 실제로 필요한 것입니다. 같은 문제로 실행 다른 사람들을위한

$('#button').click(() => { 
    var $myRadio = $('[id^="option"]:checked'); 
    // neither of these work 
    alert($('input[type=radio][name=options]:checked').val()); 
    alert($myRadio.val()); 

}); 

바이올린 here

+0

흠, 대답 해줘서 고마워. 말이된다. 나는 이것이 표준 라디오 버튼에서 작동하는 방식이 아닌듯한 인상을 받았다. 내가 틀렸어. – charsi

+0

다른 방법으로 변수를 할당하는 방법은 무엇입니까? – charsi

+0

아니요, 클릭 또는 변경 이벤트에서 변수를 확인하려는 경우. 그리고 왜 여기에 변수가 필요할 때 다른 곳에 변수를 지정해야할까요? 이것은 완전히 괜찮습니다. – bipen

1

. 값을 확인할 때 라디오 버튼 이름을 사용하지 않으려면 filter -

var $myRadio = $('input[type=radio][name=options]'); 

$('#button').click(() => { 
    console.log($myRadio.filter(':checked').val()); 
} 
관련 문제