2013-10-01 24 views
1

以下代碼設置一個元素的選定屬性,並在複選框選中值更改時切換該元素。如何使用ASP.NET複選框和JavaScript切換屬性?

ASP.NET

<asp:CheckBox CssClass="Cb" RunAt="Server"/> 
<asp:TextBox CssClass="Txt" RunAt="Server" ReadOnly="True"/> 

HTML

<input class="Cb" type="checkbox"/> 
<input class="Txt" type="text" readonly="true"/> 

JQUERY

$(".Cb").change(function() { 
    $(".Txt").prop("readonly",!this.checked); 
}); 

[實施例

http://jsfiddle.net/gKwbn/


的一個問題

當這個代碼與ASP.NET ASP執行:複選框的結果是不一樣的,當代碼與執行如一個輸入:複選框。

隨着輸入:複選框只讀狀態切換爲:

INITIAL STATE

<input class="Txt" type="text" readonly="true"/> 

TOGGLE

<input class="Txt" type="text"/> 
<input class="Txt" type="text" readonly=""/> 

與ASP:複選框只讀狀態切換爲:

初始狀態時

<input class="Txt" type="text" readonly="readonly"/> 

撥動

<input class="Txt" type="text" readonly=""/> 
<input class="Txt" type="text" readonly=""/> 

諒解READONLY

以下都是性的判定是有效的只讀被設置爲true。

  • 只讀
  • 只讀= 「」
  • 只讀= 「真」
  • 只讀= 「只讀」

我的問題

如何去除然後切換隻讀當使用asp.net與jQuery/JavaScript的財產?


編輯

問題是類是使用一個asp當施加到不正確的元素:複選框。

THIS

<asp:CheckBox CssClass="Cb" RunAt="Server"/> 

呈現在瀏覽器作爲

<span class="Cb"><input id="ctl01" type="checkbox" name="ctl01" /></span> 

的解

目標在asp:複選框使用ID和未類。

<asp:CheckBox ID="CBID" CssClass="Cb" RunAt="Server"/> 

$("#<%= CBID.ClientID %>").change(function() { 
    $(".Txt").prop("readonly", this.checked ? "" : "readonly"); 
}); 

回答

3

如果我沒有完全誤解了你的問題,你可以用這個來代替......

$(".Cb").change(function() { 
    $(".Txt").prop("readonly", this.checked ? "" : "readonly"); 
}); 

將在readonly屬性設置爲readonly或空,這取決於複選框狀態。

Here's a working fiddle

編輯:繼您的更新,您可以將該類添加到這樣的複選框...

<asp:CheckBox class="Cb" RunAt="Server"/> 

,或者您可以通過ID參考。 ...

$("#ctl01").change(function()... 

或按名稱...

$("input[name=ctl01]").change(function()... 

或一個事實,即它在跨度...

$(".Cb input:checkbox").change(function()... 
+0

感謝您的快速反應射手。您的代碼是正確的,但在應用於asp:複選框時再次無效。 – Obsidian

+0

這裏一定有些不一樣的地方,因爲我剛剛做了一個ASP.Net複選框,它*做*工作。當頁面呈現時,它仍然只是一個複選框。是什麼讓你說它不起作用 - 究竟是哪裏出了問題? – Archer

+0

您已將類「Cb」添加到複選框的包含範圍,而不是複選框本身。把它放在複選框上,它應該可以解決你的問題:) – Archer

相關問題