我已经创建了一个非常简单的测试页面来复制我的应用程序中的一个问题。很抱歉,如果这看起来很冗长的东西这么微不足道。
.aspx页面:
<body>
<form id="form1" runat="server">
<asp:TextBox ID="tb" runat="server"></asp:TextBox>
<asp:Button ID="btnOk" runat="server" text="OK" Width="60px" UseSubmitBehavior="true" OnClientClick="saveAmendments();" />
</form>
在后面代码的page_load中,我向文本框添加了一个onchange
属性:
if (!IsPostBack)
{
tb.Attributes.Add("onchange", "addSaveDetails('abc###123###456###test###abc###');");
}
}
其渲染如下所示:
<body>
<form name="form1" method="post" action="TestJP.aspx" id="form1">
<div>
<input type="hidden" name="__VIEWSTATE" id="__VIEWSTATE" value="/wEPDwUi3er8ht8oaCZzy2..." />
</div>
<div>
<input type="hidden" name="__EVENTVALIDATION" id="__EVENTVALIDATION" value="/wEWAwKOoa..." />
</div>
<input name="tb" type="text" value="testtt" id="tb" onchange="addSaveDetails('abc###123###456###test###abc###');" />
<input type="submit" name="btnOk" value="OK" onclick="saveAmendments();" id="btnOk" style="width:60px;" />
</form>
因此,如果更改文本框中的值并单击屏幕上的其他位置,AddSaveDetails
函数将触发,然后单击按钮,saveAmendments
函数将触发。(而不是先在屏幕上的其他地方),并且仅在第一个(onchange
)函数触发。onClick
事件从不触发。被调用的js除了发出警报外什么也不做。是什么阻止了事件冒泡到最后一次调用?
2条答案
按热度按时间1tuwyuhd1#
尝试从函数中返回true和警报。我假设事件操作传播正在停止,因为您返回了false(或者什么都不返回,这将被解释为false)。
x7yiwoj42#
太气人了。谢谢tvanfosson。它让我走上了正确的道路,但我不需要显式返回true
在我的js函数中,我有一个调试器;声明。这是把事情搞砸了。
例如,注解掉调试器修复的内容..
}
调试器的特点是什么这阻止了第二个事件的触发!啊。原来我实际上创造了一个问题,试图解决一个不存在的问题!!