2012-02-23 28 views
0

我試圖從使用Javascript的asp RadioButtonList禁用單選按鈕。以下是我有:使用Javascript禁用單選按鈕列表項目

<asp:RadioButton ID="rbPlanner" runat="server" onclick="deselectRadioListItem('P');" /> 

調用該客戶端的JavaScript的onClick ...

function deselectRadioListItem(radioValue) { 
     var clientID = ('<%= rblSummaryOptions.ClientID %>'); 
     for (i = 0; i < '<%= rblSummaryOptions.Items.Count %>'; i++) { 
      if (document.getElementById(clientID + "_" + i.toString()).value == radioValue) { 
       (clientID + "_" + i.toString()).disabled === true; 
      } 
      else 
      { 
       (clientID + "_" + i.toString()).disabled === false; 
      } 
     } 
    } 

一切似乎都工作正常(火災,迭代,if語句工作)然而,單選按鈕控制即使邏輯被擊中,也不會被禁用。我錯過了什麼?非常感謝幫助,謝謝!

回答

1

使用===運算符進行比較。您需要使用=

function deselectRadioListItem(radioValue) { 
    var clientID = ('<%= rblSummaryOptions.ClientID %>'); 
    for (i = 0; i < '<%= rblSummaryOptions.Items.Count %>'; i++) { 
     if (document.getElementById(clientID + "_" + i.toString()).value == radioValue) { 
      document.getElementById(clientID + "_" + i.toString()).disabled = true; 
     } 
     else 
     { 
      document.getElementById(clientID + "_" + i.toString()).disabled = false; 
     } 
    } 
} 

或者清理一點點:

function deselectRadioListItem(radioValue) { 
    var clientID = ('<%= rblSummaryOptions.ClientID %>'); 
    for (i = 0; i < '<%= rblSummaryOptions.Items.Count %>'; i++) { 
     var objCurrentRdo = document.getElementById(clientID + "_" + i.toString()); 

     if (objCurrentRdo.value == radioValue) 
      objCurrentRdo.disabled = true; 
     else 
      objCurrentRdo.disabled = false; 
    } 
}​ 

附加信息:上MDN退房Comparison Operators

+0

我作出改變,但它仍然是不禁用。 – Ted 2012-02-23 19:40:29

+0

@泰德,有沒有錯誤?如果元素存在並且它們的值等於傳入的radioValue,則上面的代碼應該可以工作。 – 2012-02-23 19:42:46

+0

啊!我試過你的清理,它運作得很好,謝謝! – Ted 2012-02-23 19:43:52

0

這是肯定錯的。

(clientID + "_" + i.toString()).disabled === true; 

也許你不會打字

document.getElementById(clientID + "_" + i.toString()).disabled = true; 

甚至更​​好

function deselectRadioListItem(radioValue) { 
     var clientID = ('<%= rblSummaryOptions.ClientID %>'); 
     for (i = 0; i < <%= rblSummaryOptions.Items.Count %>; i++) { 
       document.getElementById(clientID + "_" + i).disabled = 
       document.getElementById(clientID + "_" + i).value == radioValue; 
     } 
    } 

你這裏有一些錯誤...

+0

我喜歡它!然而,我越來越....微軟JScript運行時錯誤:對象預期 – Ted 2012-02-23 19:38:17

+0

@Ted找不到getElementByID元素請確保此名稱存在(clientID +「_」+ i),或者顯示呈現的html以查看它們是什麼。 – Aristos 2012-02-23 19:41:39