我有一个.net控件。我正在使用attribute属性禁用控件的列表项。 在客户端进行验证我正在检查控件是启用还是禁用。 写入的j查询仍然表示控件已启用,即使它已被禁用并触发警报。 我有点挣扎,任何人都可以帮助我。
这是我的代码
private void EnableDisableControl(ListControl control, Boolean value)
{
if (value == true)
{
foreach (ListItem item in control.Items) {
item.Attributes.Remove("checked");
item.Attributes.Add("disabled", "disabled");
}
}
else
{
foreach (ListItem item in control.Items)
{
item.Attributes.Remove("disabled");
}
}
}
我使用此功能来禁用我的一个控件
EnableDisableControl(rdb_control, true);
这是jquery
if ($("#<%=rdb_control.ClientID%> input[type='radio']").is(':enabled')) {
if ($("#<%=rdb_control.ClientID%> input[type='radio']:checked").length == 0) {
alert("Required");
}
}
这里即使控制功能被禁用,我仍然会收到警报。而它甚至不应该检查控件是否被禁用。
这是它看起来禁用跨度
的HTML <table id="ctl00_m_g_c09fd465_0ae4_479b_8fc6_21a7de645003_ctl00_rdb_control" class="chklistUnknown" border="0">
<tr>
<td><span disabled="disabled"><input id="ctl00_m_g_c09fd465_0ae4_479b_8fc6_21a7de645003_ctl00_rdb_control_0" type="radio" name="ctl00$m$g_c09fd465_0ae4_479b_8fc6_21a7de645003$ctl00$rdb_control" value="Yes" /><label for="ctl00_m_g_c09fd465_0ae4_479b_8fc6_21a7de645003_ctl00_rdb_control_0">is</label></span></td>
</tr><tr>
<td><span disabled="disabled"><input id="ctl00_m_g_c09fd465_0ae4_479b_8fc6_21a7de645003_ctl00_rdb_control_1" type="radio" name="ctl00$m$g_c09fd465_0ae4_479b_8fc6_21a7de645003$ctl00$rdb_control" value="No" /><label for="ctl00_m_g_c09fd465_0ae4_479b_8fc6_21a7de645003_ctl00_rdb_control_1">not</label></span></td>
</tr><tr>
<td><span disabled="disabled"><input id="ctl00_m_g_c09fd465_0ae4_479b_8fc6_21a7de645003_ctl00_rdb_control_2" type="radio" name="ctl00$m$g_c09fd465_0ae4_479b_8fc6_21a7de645003$ctl00$rdb_control" value="Unknown,Yes" /><label for="ctl00_m_g_c09fd465_0ae4_479b_8fc6_21a7de645003_ctl00_rdb_control_2">Unknown</label></span></td>
</tr>
</table>
答案 0 :(得分:0)
嗯,问题出在您的服务器端代码中。您正在禁用无法禁用的span
元素。当您的jQuery询问您的radiobuttons
是否已启用时,答案是肯定的......因为它们已启用。没有radiobutton具有disabled
属性。
您必须更改服务器方法并在控制树中进一步挖掘以查找和禁用inputs
,而不是spans
。
CheckListControl
具有Enabled
属性。只需将其设置为false
:
private void EnableDisableControl(ListControl control, Boolean value)
{
control.Enabled = value;
}
它应该自动禁用复选框。