我想通过更改 VB.Net 页面中某些 javascript 中的“window.location”的值来引起浏览器重定向。当我单击“开始”按钮时,以下代码可以正常工作:出现警报并且浏览器已成功重定向。如果我从文本内部按“输入”,也会发生同样的情况,这不起作用。我确实看到了警报,但浏览器停留在同一页面上。
如果我删除了对 ASP 母版页的引用,“输入”功能就会开始工作,所以也许其中的某些东西正在处理按键事件并终止重定向指令?
顺便说一句,我最初是使用 .Net 组件“正常”执行此操作,并在单击提交按钮时进行回发。但这奇怪地导致目标页面加载两次,导致页面闪烁并且通常效率低下。无论如何,我认为没有任何理由涉及所有 .Net 开销,因此我希望通过简单的客户端脚本来完成。
有谁知道在.Net 干扰的情况下如何让“输入”键功能正常工作?或者我是在叫错树,应该回到常规的 .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>