【发布时间】:2010-04-22 12:06:06
【问题描述】:
我在后面的代码中动态生成单选按钮,并在创建它们时为其分配 javascript。当最终触发回发(按钮上的自动回发被禁用)时,此 javascript 将更改隐藏字段中的值。我使用与 ASP ImageButtons 完全相同的方法,它工作正常,但是当我使用单选按钮执行此操作时,事件永远不会触发 Javascript。我怀疑我可能使用了错误的事件名称,但我尝试了几个(onclick、onCheckedChanged 等)。
这是 VB.NET 代码的示例 - 为什么我的按钮可以正常工作,但单选按钮却不行!
//This is my hidden field
ClientScript.RegisterHiddenField(Me.UniqueID & "_someVariable", "")
Dim radDefault As RadioButton = New RadioButton()
radDefault.GroupName = "radio buttons"
radDefault.AutoPostBack = False
//This adds the Javascript to set the hidden field with an onClick event
radDefault.Attributes.Add("onClick", "document.forms[0]." & Me.UniqueID & "_someVariable.value='0';document.forms[0].submit();")
代码被简化,因为按钮生成实际上是通过一个迭代器,但相同的属性被赋予每个生成的单选按钮。
【问题讨论】:
-
代码看起来不错。脚本根本没有运行吗?还是它试图运行并抛出错误?或者可能存在阻止它运行的语法错误?你生成的脚本真的渲染到浏览器了吗?
-
你好 Ray,我怎么知道脚本是否正在运行或是否抛出错误?我正在使用 Visual Studio 2008 - 是否可以调试呈现的 javascipt?以下内容呈现给浏览器 - 看起来不错:
-
一个技巧是在你的脚本前面加上“alert(1);” - 如果它正在尝试运行,您将看到警告框。如果您使用的是 IE,请检查状态栏左侧是否有脚本错误。如果是 Firefox,请使用 Firebug 获得更好的信息。
-
感谢 Firebug 的提示 - 安装了它,看起来脚本运行良好。我现在认为这一定与页面生命周期覆盖值有关。我的另一个用途是将属性附加到按钮,然后在按下按钮时将值存储在会话中。在这种情况下,我将属性附加到不会导致回发的单选按钮上,并尝试在按下按钮时将值存储在会话中。我进行了调试以确认行为遵循相同的模式,但该值似乎不再在我的隐藏字段中。
-
嘿 Ray,我现在已经解决了这个问题 - 按下按钮引起的回发实际上是清除隐藏字段的值(与将 javascript 分配给按钮不同的行为)。为帮助干杯
标签: asp.net javascript radio-button client-side