我遇到了 IE9 的问题,当单击最初禁用并通过 javascript 重新启用的按钮时,它没有执行我需要的操作。
我有一个有几个按钮的表单(用 perl CGI 构建)。这些在实际的 html 中都被禁用,并且在表单完全加载时被启用。这样做是为了避免用户在页面完全加载之前保存页面。
在所有浏览器中,按钮最初显示为禁用,并在页面完全加载时启用。也在IE中。现在,这些重新启用的按钮在 IE 中单击时不起作用(使用 IE 9 测试),但它们在 Firefox 和 chrome 中按预期工作。
这些按钮之一的代码显示在 IE 开发人员工具中:
<input name="Event_Action" id="syncStream" type="submit" value="Create Sync Stream"/>
创建按钮的代码最初被禁用:
print $query->submit( -name=>'Event_Action', -value=>$btnCreateSyncStream, -disabled=>'disabled', -id=>'syncStream');
这些按钮是通过 body 标签的 onload 事件启用的:
<body onload="enableButtons()">
<form method="post" action="/cgi-bin/pdf/pdf.pl?&pdf_id=1071&release=at7.1.0&pdf_patch_rel_phase=b" enctype="application/x-www-form-urlencoded" onsubmit="return validatePatchNr()" name="MYFORM">
javascript函数enableButtons:
function enableButtons()
{
var buttons = document.getElementsByName("Event_Action");
for (i=0;i<buttons.length;i++)
{
buttons[i].disabled=false;
}
}
现在,当使用这些重新启用的按钮之一时,IE 似乎会重新加载页面,但链接到该按钮的实际操作并未执行。Chrome 和 Firefox 中的同一页面可以正常工作。这两种浏览器都执行正确的操作。
我怀疑不是表单上的每个字段都被提交,这会导致 Perl 脚本无法识别所请求的操作,但我还不确定。
我尝试使用 IE 中的开发工具调试该问题,但如果您习惯使用 firebug,那么使用这些工具并不容易。
有人知道这里可能出了什么问题吗?我可能遗漏了一些明显的东西。