2014-01-12 3 views
0

저는 Javascript에 익숙하지 않아 매우 쉬운 질문입니다.하지만 어디서 잘못 될지 알 수는 없습니다.라디오 버튼을 클릭하지 않으면 입력을 비활성화하는 방법은 무엇입니까?

id가 "custom"인 라디오 버튼이 선택되어 있지 않으면 두 개의 입력 필드를 비활성화하려고합니다.

HTML

<input type="radio" name="period" value="week" /> Weekly 
<input type="radio" name="period" value="fortnight" /> Fortnightly 
<input type="radio" name="period" value="month" /> Monthly 
<input type="radio" name="period" value="quarter" /> Quarterly 
<input type="radio" name="period" value="year" /> Annually 
<input type="radio" name="period" id="custom" value="one-time" onchange="datedis()"/ 
<input type="date" name="from" disabled /> to <input type="date" name="to" disabled /> 

자바 스크립트

function datedis() { 
    if(document.getElementsById("custom").checked) { 
     document.getElementsByName("from").disabled = false; 
     document.getElementsByName("to").disabled = false; 
    } else { 
     document.getElementsByName("from").disabled = true; 
     document.getElementsByName("to").disabled = true; 
    } 
} 

Here는 JSFiddle 내 코드입니다.

+0

쉬운 방법은 하나 개의 라디오 버튼을 체크하고 입력 필드가 항상 사용하는 것입니다. –

+0

그러나 특정 라디오 버튼이 선택되었을 때만 입력 필드를 활성화하고 싶습니다. – dayuloli

+0

오 죄송합니다, 제 실수. 곧 답을 얻을 수 있습니다. –

답변

3

여러 문제 :

  1. 사용 onclick 대신 onchange, 그렇지 않으면 사용자 정의이 해제되지 않습니다 멀리 에서 클릭, 모든 라디오 버튼에 그냥 사용자 정의를 이벤트 핸들러를 할당해야합니다 입력 필드. 도 참조하십시오. OnChange event handler for radio button (INPUT type="radio") doesn't work as one value

  2. getElementsById이 아닌 getElementById입니다.

  3. document.getElementByName은 없습니다.

  4. 는 jsfiddle에서 (즉, 코드가 onload에 매립되어 있기 때문에)하지 function foo() {...}, window.foo = function() {...} 갖는 함수를 정의한다.

는 FYC : http://jsfiddle.net/MEsGH/

+0

명확한 설명에 감사드립니다! – dayuloli

관련 문제