默认情况下,ASP.NET 将父 ID 附加到控件以维护元素的唯一 ID。这是正确的行为。
此外,JavaScript 区分大小写。事件都以小写字母开头。有些浏览器有.click()
,有些浏览器有,.onclick()
所以下面的代码是我能提供的最好的代码,而无需更改代码的其他部分:
onclick="var b = document.getElementById('<%=LoginButtonInvis.ClientID%>'); if (b.click) b.click(); else if (b.onclick) b.onclick();"
还要确保第二个按钮不是提交按钮,type="button"
否则会导致表单提交两次。
编辑:这仅在文档中存在第一个按钮时才有效。使用您当前的代码,由于Visible="false"
您拥有,它不存在。要在仍然隐藏的同时发送它,请删除并将其Visible="false"
添加到您的代码后面:
LoginButtonInvis.Style["display"] = "none";
或者使用“display: none;”应用 CSS 类 规则。
为了避免使用内联 JavaScript,以及更好的跨浏览器支持(IE,是的),您最好在页面中添加 JavaScript 块:(无论在哪里)
<script type="text/javascript">
function SimulateClick(buttonId) {
var button = document.getElementById(buttonId);
if (button) {
if (button.click) {
button.click();
}
else if (button.onclick) {
button.onclick();
}
else {
alert("DEBUG: button '" + buttonId + "' is not clickable");
}
} else {
alert("DEBUG: button with ID '" + buttonId + "' does not exist");
}
}
</script>
现在在第二个按钮中只有这个:
<button name="submit" onclick="SimulateClick('<%=LoginButtonInvis.ClientID%>');"><i class="icon-arrow-right icon-large"></i></button>
另请注意,您不需要runat="server"
第二个按钮,它只会导致<%=
无法工作并使事情复杂化。