我已经创建了一个非常简单的测试页面来复制我在我的application.Sorry中遇到的问题,如果这看起来像是对于如此微不足道的事情的长篇大论。
.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除了发出警告之外什么也不做。是什么在阻止事件冒泡到最后一次调用?
发布于 2009-10-02 10:55:06
除了警告之外,尝试从函数中返回true。我假设事件操作传播被停止,因为您返回了false (或者什么也没有返回,这被解释为false)。
发布于 2009-10-02 11:19:31
令人气愤。谢谢tvanfosson。它让我走上了正确的道路,但我不需要显式地返回true
在我的js函数中,我有一个debugger;语句。把事情搞砸了。
即注释掉调试器修复的东西..
function addSaveDetails(strDetails) {
debugger;
alert('func1');
//return true;}
调试器是怎么回事;它阻止了第二个事件的触发!啊。事实证明,我实际上创造了一个问题,试图解决一个不存在的问题!!
https://stackoverflow.com/questions/1508848
复制相似问题