以下代码设置一个元素的选定属性,并在复选框选中值更改时切换该元素。
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"/>
查询
$(".Cb").change(function() {
$(".Txt").prop("readonly",!this.checked);
});
工作示例
一个问题
当使用 ASP.NET asp:checkbox 执行此代码时,结果与使用 input:checkbox 执行代码时的结果不同。
使用 input:checkbox 只读状态切换为:
初始状态
<input class="Txt" type="text" readonly="true"/>
切换
<input class="Txt" type="text"/>
<input class="Txt" type="text" readonly=""/>
使用 asp:checkbox 只读状态切换为:
初始状态
<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:checkbox 时,该类被应用于不正确的元素。
这个
<asp:CheckBox CssClass="Cb" RunAt="Server"/>
在浏览器中呈现为
<span class="Cb"><input id="ctl01" type="checkbox" name="ctl01" /></span>
解决方案
使用 ID 而不是类来定位 asp:checkbox。
<asp:CheckBox ID="CBID" CssClass="Cb" RunAt="Server"/>
$("#<%= CBID.ClientID %>").change(function() {
$(".Txt").prop("readonly", this.checked ? "" : "readonly");
});