我想通過在VB.Net頁面中更改某些javascript中的「window.location」的值來導致瀏覽器重定向。當我點擊「Go」按鈕時,以下代碼正常工作:警報出現,瀏覽器成功重定向。如果我按下從文本框內輸入的內容,盒子就不起作用。我看到警報,但瀏覽器保持在同一頁面上。繞過asp事件處理程序
如果我刪除對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>
謝謝,但我實際上不使用jQuery。爲這個問題導入整個庫會感覺像是蚊子,即使它是一個非常惱人的蚊子:)你有一個想法,我怎麼可以用日常原生javascript來做到這一點? – nttaylor 2011-05-17 18:24:56
Double checked,顯然preventDefault()是作爲JavaScript中事件對象的一種方法實現的 - 所以你應該能夠在標準javascript中做同樣的基本事情。 (所以event.preventdefault()應該工作)。 http://www.quirksmode.org/js/events_early.html – Streklin 2011-05-17 18:27:42
啊哈!感謝您的建議。事實證明,preventDefault並未在IE中實現,但要做同樣的事情你設置window.event.returnValue = false。對於非IE瀏覽器,您可以使用preventDefault()。我現在應該走在正確的道路上。看起來,使用.Net的時候,你可以避免使用.Net,因爲你越好越好! – nttaylor 2011-05-17 18:47:42