以下.NET 4.0代码在IE9,Chrome 20和Opera 12中完美运行,但在Firefox 13中失败。所有浏览器都是默认安装,没有插件。
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server"><title></title>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:TreeView ID="Treeview1" Runat="server"
onclick="javascript:postBackByObject()"
ontreenodecheckchanged="Treeview1_TreeNodeCheckChanged"
ShowCheckBoxes="All" >
<Nodes>
<asp:TreeNode Value="Child1" Expanded="True" Text="1">
<asp:TreeNode Value="Grandchild1" Text="A" />
<asp:TreeNode Value="Grandchild2" Text="B" />
</asp:TreeNode>
<asp:TreeNode Value="Child2" Text="2" />
<asp:TreeNode Value="Child3" Expanded="True" Text="3">
<asp:TreeNode Value="Grandchild1" Text="A" />
</asp:TreeNode>
</Nodes>
</asp:TreeView>
<asp:TextBox ID="TextBox1" runat="server" Height="156px" TextMode="MultiLine"
Width="295px"></asp:TextBox>
</div>
</form>
</body>
<script language="javascript" type="text/javascript">
function postBackByObject() {
var o = window.event.srcElement;
if (o.tagName == "INPUT" && o.type == "checkbox") {
__doPostBack("", "");
}
}
</script>
</html>
我正在尝试使用以下代码捕获TreeNode复选框事件:
protected void Treeview1_TreeNodeCheckChanged(object sender, TreeNodeEventArgs e)
{
TextBox1.Text += e.Node.Text;
}
这很烦人 - 欢迎任何解决方案!
答案 0 :(得分:1)
尝试更一般地处理事件,因此它适用于FF和其他浏览器。
e.g。
onclick="javascript:postBackByObject(event)"
function postBackByObject(e) {
var evt = e || window.event;
var o = evt.target || evt.srcElement;
if (o.tagName == "INPUT" && o.type == "checkbox") {
__doPostBack("", "");
}
}
编辑我忘了为target / srcElement
添加一行