Enter キーを押して先行入力から項目を選択すると、Firefox がフォームを送信する際に問題が発生します。Chrome と Internet Explorer は、Enter キーを 1 回押して先行入力からアイテムを選択し、もう一度 Enter キーを押して送信すると、期待どおりに動作します。送信のためにEnterキーを押すことを完全に無効にすることができました
function stopEnter(e) {
if (e.keyCode == 13) {
e.stopPropagation();
e.preventDefault();
}
Firefox を他のブラウザと同じように動作させたいと考えています。これが私のテストコードです。
<html xmlns="http://www.w3.org/1999/xhtml">
<head id="Head1" runat="server">
<title></title>
<link href="http://twitter.github.com/bootstrap/assets/css/bootstrap.css" rel="stylesheet" />
<script type="text/javascript" src="http://twitter.github.com/bootstrap/assets/js/jquery.js"></script>
<script type="text/javascript" src="http://twitter.github.com/bootstrap/assets/js/bootstrap-typeahead.js"></script>
<script type="text/javascript">
$(document).ready(function () {
var abc = ['asd', 'bvc', 'cxz', 'dsa', 'ewq', 'fgh', 'gfd', 'hrf', 'iuuy', 'aqq', 'bvb', 'ccc'];
$('#typer').typeahead({ source: abc }).focus();
});
</script>
</head>
<body>
<form id="form2" runat="server" >
<asp:Panel DefaultButton="button1" runat="server">
<div>
<asp:TextBox data-provide="typeahead" ID="typer" autocomplete="off" runat="server" />
<asp:Button text="submit" ID="button1" runat="server" OnClick="button1_Click" />
</div>
</asp:Panel>
</form>
</body>
</html>
コードビハインド
protected void button1_Click(object sender, EventArgs e)
{
Response.Write(typer.Text);
}
パネルを削除すると、希望どおりに機能するように見えますが、実際のページでは、モーダルのマスターページにこのコードがあり、Enter キーを押すと、元のページにボタンが送信されます。