Mat*_*u G 6 html javascript vb.net asp.net jquery
我对asp.net启用的radiobutton状态有一个奇怪的问题.
.aspx页面中的代码:
<%@ Page Language="vb" AutoEventWireup="false" CodeBehind="WebForm1.aspx.vb" Inherits="testradioButton.WebForm1" %>
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
<script type="text/javascript" src="https://code.jquery.com/jquery-1.11.1.min.js"></script>
<script type="text/javascript">
$(document).ready(function () {
$('#radYes').change(function () { gererEtat(); });
$('#radNo').change(function () { gererEtat(); });
});
function gererEtat() {
$('#radDisabledYes').prop('disabled', !$('#radYes').prop('checked'));
$('#radDisabledNo').prop('disabled', !$('#radYes').prop('checked'));
}
</script>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:radiobutton ID="radYes" runat="server" GroupName="test" Text="yes"></asp:radiobutton>
<asp:radiobutton ID="radNo" runat="server" GroupName="test" Text="No"></asp:radiobutton>
</div>
<div>
<asp:radiobutton ID="radDisabledYes" runat="server" GroupName="test2" Text="yes"></asp:radiobutton>
<asp:radiobutton ID="radDisabledNo" runat="server" GroupName="test2" Text="No"></asp:radiobutton>
</div>
<asp:LinkButton ID="lnktoto" runat="server" Text="Submit"></asp:LinkButton>
</form>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
和代码背后:
Public Class WebForm1
Inherits System.Web.UI.Page
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
If Not IsPostBack Then
radDisabledYes.Enabled = radYes.Checked
radDisabledNo.Enabled = radYes.Checked
End If
Stop
End Sub
Private Sub Radiobutton1_CheckedChanged(sender As Object, e As EventArgs) Handles radYes.CheckedChanged, radNo.CheckedChanged
radDisabledYes.Enabled = radYes.Checked
radDisabledNo.Enabled = radYes.Checked
End Sub
Private Sub lnktoto_Click(sender As Object, e As EventArgs) Handles lnktoto.Click
Stop
End Sub
End Class
Run Code Online (Sandbox Code Playgroud)
在服务器端,我在第一次加载时禁用单选按钮.我在javascript中有相同的条件.所以在客户端,如果用户单击是,我启用一些控件.我在服务器端做同样的事情.除了Radio Button之外,它适用于所有类型的控件.
假设在加载时,我禁用单选按钮.在客户端,基于用户输入,我启用它们(在javascript中).用户选中了一个单选按钮并提交了页面.在服务器端,单选按钮被禁用并取消选中.我有代码检查条件并启用它.但仍未检查单选按钮.我理解为什么,服务器忽略已检查状态,因为一开始它认为它被禁用.有没有办法让这项工作?我知道服务器正在接收检查状态,因为当我检查Request.Form时,我看到radDisable = Yes.
谢谢你的帮助.
这是您正在寻找的黑客:)
Public Class WebForm1
Inherits System.Web.UI.Page
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
If radYes.Checked Then
radDisabledYes.InputAttributes.Remove("disabled")
radDisabledNo.InputAttributes.Remove("disabled")
Else
radDisabledYes.InputAttributes("disabled") = "disabled"
radDisabledNo.InputAttributes("disabled") = "disabled"
End If
Stop
End Sub
Private Sub Radiobutton1_CheckedChanged(sender As Object, e As EventArgs) Handles radYes.CheckedChanged, radNo.CheckedChanged
' not really needed anymore, but lets leave it in here for fun!
End Sub
Private Sub lnktoto_Click(sender As Object, e As EventArgs) Handles lnktoto.Click
Stop
End Sub
End Class
Run Code Online (Sandbox Code Playgroud)
这实质上绕过了 .NET 关于禁用控件的安全检查。控件仍然会适当地启用/禁用,但您这样做不会弄乱属性WebControl.Enabled。
| 归档时间: |
|
| 查看次数: |
2841 次 |
| 最近记录: |