デフォルトでは、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();"
また、2 番目のボタンが送信ボタンでないことを確認してtype="button"
ください。そうしないと、フォームが 2 回送信されます。
編集: これは、ドキュメントに最初のボタンが存在する場合にのみ機能します。現在のコードでは、あなたが持っているために存在し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>
2番目のボタンにはこれだけがあります:
<button name="submit" onclick="SimulateClick('<%=LoginButtonInvis.ClientID%>');"><i class="icon-arrow-right icon-large"></i></button>
runat="server"
また、2 番目のボタンは必要ないことにも注意してください。機能しなく<%=
なり、事態が複雑になるだけです。