2014-01-12 111 views
0

我對Javascript並不是很熟悉,我知道這是一個非常簡單的問題,但我無法弄清楚我要出錯的地方。如何禁用輸入,除非單擊單選按鈕?

我試圖禁用兩個輸入字段,除非一個單選按鈕的ID爲「自定義」被選中。

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 /> 

的Javascript

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. 這是getElementById,而不是getElementsById

  3. 有沒有document.getElementByName

  4. 在jsfiddle中,使用window.foo = function() {...}定義函數,而不是function foo() {...}(因爲該代碼嵌入在onload中)。

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

+0

謝謝您的明確解釋! – dayuloli