2009-10-01 120 views
0

我有几个文本框和按钮来保存它们的值在网页上。文本框的onchange事件触发了一些js,这些js将更改后的文本添加到js数组中。单击确定按钮将其通过web服务刷新到数据库。这工作正常,除了当onchange事件是由点击确定按钮造成的。在这种情况下,文本框的onchange仍会触发,但按钮的onClick事件不会。有任何想法吗?按钮OnClick事件不会触发,当它导致文本框onChange事件首先触发

文本框看起来像

<input name="ctrlJPView$tbcTabContainer$Details$JP_Details_Address2Text" type="text" value="test" 
id="ctrlJPView_tbcTabContainer_Details_JP_Details_Address2Text" onchange="addSaveDetails('Jobs###' + document.getElementById('ctrlJPView_tbcTabContainer_Details_JP_Details_Address2Text').value + ');" style="font-size:8pt;Left:110px;Top:29px;Width:420px;Height:13px;Position:absolute;" /> 

我保存按钮

<input type="button" name="ctrlJPView$btnOk" value="OK" onclick="saveAmendments();refreshJobGrids();return false;__doPostBack('ctrlJPView$btnOk','')" id="ctrlJPView_btnOk" class="ControlText" style="width:60px;" /> 

更新:我想这可以归结为两件事情之一。 1)在按钮的onClick被调用以抑制该调用之前发生了某些事情,例如无意中返回false;或者2)onClick事件根本不会触发。现在我已经清除了事先调用的函数中的所有内容,但问题仍然存在。但是,如果我完全删除了通话,它可以正常工作(???)

回答

0

__doPostBack函数那个不执行?在这种情况下,return false是一个明显的问题 - 一旦你回来了,没有更多的代码被执行。

一个更迂回的笔记,你应该停止在你的html中使用onBlah处理程序,而是使用提供事件观察者的现代JavaScript库。我推荐jquery,但extjsprototype也可以工作,并以其他方式使您的生活更轻松。

+0

正在追加__doPostBack,因为在我的.net代码中,我将输入的useSubmitBehavior设置为false。保存之后的函数是saveAmendments函数,它在返回false之前应该已经执行。你会认为这可能是失败的文本框onchange事件,但从调试它不会出现。我已经缩小了从本质上没有任何功能。 – user48408 2009-10-01 12:53:47