我想通过在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>
答案 0 :(得分:0)
你的输入事件可能会被.Net javascript的东西抓住。通常在这样的情况下,我会在做我的工作之前阻止事件的默认行为。我不知道你是否使用jQuery,但代码如下:
$('#buttonid').keydown(function(e) {
if (e.keyCode == 13) {
e.preventDefault();
//do whatever you want here.
}
});
答案 1 :(得分:0)
您的MasterPage内容中是否有按钮?这听起来不像是.NET问题,听起来更像是对HTML标准的误解。由于您的所有内容都在一个<form>
元素中,因此浏览器会根据您在网页上找到的第一个<submit>
按钮提交该页面。您可以通过将内容分组到<asp:Panel>
并将其DefaultButton
属性设置为提交按钮的ID来解决此问题。您也可以设置文本框和按钮的ValidationGroup
属性来完成同样的事情,但我不能确定这是否适用于这种情况,或者只影响验证控件。
答案 2 :(得分:0)
您没有将事件传递给事件处理程序。这可能是您问题的一部分 - 至少在IE以外的浏览器中。
<input id="textOne" onkeypress="goIfEnterPressed(event)"/>
function goIfEnterPressed(e) {
if (e.keyCode == 13) {
clickHandler();
}
}
另外,你真的想为非输入密钥返回false吗?看起来你正试图取消这个事件,但我认为它不会像写的那样完成。但是,如果它确实有效,您将阻止将任何文本输入到文本框中。看起来像是一种奇怪的行为。