ASP单选按钮在使用和不使用工具提示文本时的行为不同(请参见:断开)



因此,我遇到了一个相当令人困惑的问题,即使用ASP RadioButton的行为与存在或不存在工具提示或工具提示文本的行为截然不同。单选按钮不能保持选中状态,您可以整天来回单击,它将在ui和服务器端临时显示为已选中(checkedchanged将表示其中一个已选中),但随后ui和服务器侧的两个单选按钮都被视为未选中(例如,单击未显示的"生成导出"按钮)。它不会表现为单选按钮,而是更像是一个带回发的标准按钮,没有任何单选功能,而且它们在ui中看起来都是未选中的。

相关狙击:

损坏:

    <asp:RadioButton ID="ui_assetExport0" runat="server" GroupName="assetExport" Checked="true" AutoPostBack="true" Text="By Filter" ToolTip="" />
    <asp:RadioButton ID="ui_assetExport1" runat="server" GroupName="assetExport" Checked="false" AutoPostBack="true" Text="By Category" ToolTip="" />
    <input id="ctl00_PageContentPlaceHolder_ui_assetExport0" type="radio" name="ctl00$PageContentPlaceHolder$assetExport" value="ui_assetExport0" onclick="javascript:setTimeout('__doPostBack('ctl00$PageContentPlaceHolder$ui_assetExport0','')', 0)">
    <input id="ctl00_PageContentPlaceHolder_ui_assetExport1" type="radio" name="ctl00$PageContentPlaceHolder$assetExport" value="ui_assetExport1" onclick="javascript:setTimeout('__doPostBack('ctl00$PageContentPlaceHolder$ui_assetExport1','')', 0)">

(注意:当工具提示被完全删除时,会出现这种确切的行为)

工作:

    <asp:RadioButton ID="ui_assetExport0" runat="server" GroupName="assetExport" Checked="true" AutoPostBack="true" Text="By Filter" ToolTip=" " />
    <asp:RadioButton ID="ui_assetExport1" runat="server" GroupName="assetExport" Checked="false" AutoPostBack="true" Text="By Category" ToolTip=" " />
    <input id="ctl00_PageContentPlaceHolder_ui_assetExport0" type="radio" name="ctl00$PageContentPlaceHolder$assetExport" value="ui_assetExport0" checked="checked">
    <input id="ctl00_PageContentPlaceHolder_ui_assetExport1" type="radio" name="ctl00$PageContentPlaceHolder$assetExport" value="ui_assetExport1" onclick="javascript:setTimeout('__doPostBack('ctl00$PageContentPlaceHolder$ui_assetExport1','')', 0)">

(注意:工具提示中只有一个空格,但如果有东西,行为是一样的)

对于第一对,它们都有onclick javascript回发,而第二对则具有所选单选按钮的checked属性(选择其中一个将按预期交换具有onclick和checked属性的)。

这些工具提示还观察到了其他一些奇怪的行为,即当其中有相当多的文本时,第一个单选按钮的工具提示会在打开对话框时立即显示(尽管我明确地将焦点放在对话框打开功能中的另一个控件上,而不是悬停在单选按钮上),并且所述工具提示将永久保留在那里,直到页面刷新为止(约75%的时间是永久的。后退、单击其他控件/区域、悬停在上面查找其他工具提示、关闭对话框等都不会清除工具提示)。如果有帮助的话,第一个单选按钮也是对话框中的第一个控件。

在checkedchanged事件中,坏掉的单选按钮似乎是作为服务器端的单选按钮正常工作的,但当单击"生成导出"按钮时,两个单选按钮都被视为未选中。

更多的相关信息可能是,这些控件位于JQuery v1.11.2(是的,是的,我知道)模式对话框中,并且位于对话框内部的ASP UpdatePanel中。是的,尽管听起来很疯狂,但工具提示文本实际上是工作和坏的单选按钮之间的唯一区别。页面上没有javascript错误,在执行代码时,checkedchanged事件(显示它们看起来像在工作)之后根本没有代码运行。页面中也没有任何javascript可以触及这些控件或其属性。

有人知道为什么工具提示文本(或工具提示本身)的存在/不存在会严重改变单选按钮的行为,以及为什么工具提示无论焦点如何都会显示并永久保持?

很抱歉出现了文字墙,我试图尽可能地描述和准确,因为这种行为很奇怪。

我在UpdatePanels内部遇到过AutoPostBack设置为true的RadioButtons问题,尽管我遇到的问题与ToolTip无关,但它听起来确实有点相似,我认为值得建议。

我已经解决了这个问题,为每个RadioButton添加了我自己的onclick属性,以确保它可以返回,例如:

ui_assetExport0.Attributes.Add("onclick", "javascript:setTimeout('__doPostBack('" + ui_assetExport0.ClientID.Replace("_", "$") + "','')', 0)");

(这对你的工具提示问题没有帮助)

如果您发布了更多的代码,特别是与UpdatePanel相关的结构,这可能会有所帮助。

最新更新