2009-10-02 207 views
1

我创建了一个非常简单的测试页来复制我在我的应用程序中遇到的问题。如果这看起来很长,对于一些如此微不足道的事情来说很长时间。OnClick事件不会触发

在.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除了警报之外别无其他。什么可以阻止事件冒泡到最后的呼叫?

回答

4

除了警报之外,尝试从您的函数返回true。我认为事件动作传播正在被停止,因为你正在返回false(或者什么也没有,这被解释为false)。

0

真气。谢谢tvanfosson。它让我走上了正确的轨道,但我不需要明确地返回true

在我的js函数中我有一个调试器;声明。这是搞砸了东西。

I.e.注释掉调试固定的东西..

function addSaveDetails(strDetails) { 
debugger; 
alert('func1'); 
//return true; 

}

是什么样的调试器;这可以防止第二个事件发生!哎呀。事实证明,我实际上创造了一个问题,试图解决一个不存在的问题!