我有我认为是一个非常简单的JavaScript问题,但我开始疯了,试图找出我的问题。JavaScript有时可以防止服务器事件与asp.net发生冲突
我有一个缓慢的页面,用户可以点击提交,然后点击另一个按钮,同时等待页面加载,这是创建问题。我想我可以显示一个请等待的消息,并禁用点击提交按钮。下面是这个函数,我使用的是asp.net 3.5,所以这里有一个名称修改问题,因为这个我正在使用一个getElemenetsByName并扫描正确的项目(不是真棒,但它似乎工作)。当我运行这个时,按钮被禁用,但是页面刚好位于那里,服务器永远不会被调用。我尝试在Firefox中,我没有看到任何萤火虫错误,但是当我在服务器上设置断点时,服务器def不会被调用。如果有预期的产出,我尝试返回true,但是nada。当我推荐processing(){ // stuff }
的内容时,它可以很好地工作,所以有些东西似乎在杀死我。
function processing() {
var pleaseWaitID = "lblPleaseWait";
var submitBtnName = "btnSubmit";
var submitControl = document.getElementsByTagName('input');
var pleaseWaitlbls = document.getElementsByName(pleaseWaitID);
for (pleaseWait in pleaseWaitlbls) {
if (pleaseWaitlbls[pleaseWait].style != null) {
pleaseWaitlbls[pleaseWait].style.visibility="visible";
}
}
for (submitButton in submitControl) {
if (submitControl[submitButton].name != null) {
if (submitControl[submitButton].name.search(submitBtnName) != -1) {
submitControl[submitButton].disabled = "disabled";
}
}
}
return true;
}
.....
asp:Button ID="btnSubmit" name="btnSubmit" SkinID="MainAction" runat="server" Text="Submit" OnClientClick = "javascript:processing();"
OnClick="btnSubmit_Click" meta:resourcekey="btnSubmitResource1"
对我在这里搞砸了任何想法?
谢谢你的时间。
请通过查看呈现的HTML源来验证标记名是否正确。 – 2011-05-05 16:55:39
由于asp.net名称的改变,呈现的html会给出非常非常长的名称标签(我认为这将在更高版本的asp.net中解决),因此它的名称和ID标记都是contentBasepage_c1_popupmodal_btnSubmit。编辑:另外我认为这是正确的,因为它似乎找到按钮,禁用它,并显示等待文本,但然后服务器不被调用。它只是坐着。 – Dio 2011-05-05 17:18:07
呈现HTMLis:input type =“submit”name =“ctl00 $ mainContentHolderMVPTO $ btnSubmit”class =“button main”id =“ctl00_mainContentHolderMVPTO_btnSubmit”onclick =“javascript:processing();”值=“提交” – Dio 2011-05-05 18:53:47