VB.NetページのJavaScriptの「window.location」の値を変更して、ブラウザをリダイレクトしたいと思います。[実行]ボタンをクリックすると、以下のコードが正しく機能します。アラートが表示され、ブラウザが正常にリダイレクトされます。テキスト内から「Enter」を押しても同じことが起こるはずです。これは機能しません。アラートは表示されますが、ブラウザは同じページにとどまります。
ASPマスターページへの参照を削除すると、「入力」機能が機能し始めます。そのため、キープレスイベントを処理し、リダイレクト命令を強制終了している可能性がありますか?
ところで、私はもともと.Netコンポーネントを使用してこれを「通常」実行し、送信ボタンがクリックされたときにポストバックを実行していました。しかし、それは奇妙なことにターゲットページを2回ロードし、ページのちらつきを引き起こし、一般的に非効率的でした。とにかく、.Netのオーバーヘッドをすべて含む理由は見当たらなかったので、クライアント側の簡単なスクリプトでそれを実行したいと思いました。
.Netの干渉にもかかわらず、「Enter」キー機能を機能させる方法を知っている人はいますか?または、間違ったツリーを吠えているので、通常の.Netポストバックに戻る必要がありますか?
<asp:Content ID="Content1" ContentPlaceHolderID="head" runat="server">
<script type="text/javascript">
function clickHandler() {
var dropdown = document.getElementById("dropdown");
var entityID = document.getElementById("textOne").value;
var destination = dropdown.options(dropdown.selectedIndex).value + entityID;
alert(destination);
location = destination;
}
function goIfEnterPressed() {
if ((event.which && event.which != 13) || (event.keyCode && event.keyCode != 13)) {
return false;
}
clickHandler();
}
</script>
</asp:Content>
<asp:Content ContentPlaceHolderID="ContentPlaceHolder2" runat="server">
<select id="dropdown">
<option value="Page1.aspx?typeOneID=">One</option>
<option value="Page2.aspx?typeTwoID=">Two</option>
<option value="Page3.aspx?typeThreeID=">Three</option>
</select>
<br />
<input id="textOne" onkeypress="goIfEnterPressed()"/>
<br />
<input type="button" value="Go" onclick="clickHandler()" />
</asp:Content>