2008年12月2日 星期二

RadioButton 不准動(12.2)

想要讓CheckBox不能讓使用者點選的話,有很多種方式。
例如:設 Enabled=False,或是來個 disabled,但是呢,這都影響到其外觀,
也就是說,當設了以上的屬性時,他的外觀就會變成是灰色的了。
當然,這樣有好處,也有壞處。這邊就介紹一個可以不影響外觀的小技巧。

<asp:CheckBox ID="CheckBox1" runat="server" onclick="return false;" />

如此一來,怎麼點,他就是不能勾選或取消喲!!

然而,既然 CheckBox 可以用的話,那 RadioButton 應該也可以用吧~~
那就來套套看吧~~
呃~~~結果,動是不能動了,可是,當我是RadioButton群組時,
當點了非預設的選項時,原本預設的選項便會被清空。看來這個小技巧不適合它了。
那就只好寫個小 Function 來協助一下吧!

物件
<asp:RadioButtonList ID="RadioButtonList1" runat="server"  onclick="readonlyRadio(this.id,2)"  >
        <asp:ListItem Value="a">Aasp:ListItem>
        <asp:ListItem Value="b" Selected="true">Basp:ListItem>
        <asp:ListItem Value="c">Casp:ListItem>
asp:RadioButtonList>

JavaScript 函式

function readonlyRadio(name,defaultCheckedIndex) 
{  
    document.getElementsByName(name)[defaultCheckedIndex].checked = true;   
    
}   
看了後,應該是看得懂吧?將預設的選項帶給它,之後,再讓它還原預設的選項就行了!!
對了,有一點要提示的是,有沒有注意到,
這邊使用的是「document.getElementsByName」,而不是「Id」?
原因是,ServerControl RadioButtonList編譯出來的是很多個「input」「type="radio" 」的HTML元件,
其中,將這些input全部以「name」屬性包起來。就跟設Group一樣囉~
所以,當我們在抓時,就該用 getElementsByName 抓呀

1 則留言:

蕃茄 提到...

媽咧,居然會搜尋到你的文章,謝謝啦~