locked
MasterPage 頁面若使用javascript 的 window.location 導頁,頁面不會導過去嗎? RRS feed

  • 問題

  • 各位大大安安:

    很久不見了,自上次發現論壇有改變之後,有一陣子都找不到這裡的網址 ^^"  再回來看到這個論壇時,看到各位大大還是非常活躍,真是非常開心。

    小弟現在又必須要再跟各位大大請教一個有關MasterPage 的問題了,情形如下:

     

    當我設定好一個MasterPage後,在內容頁有個DefaultA.aspx(設為起始頁面),而我在MasterPage內只有一段<input>的CODE,其寫法如下

    <input type="text" id="txtTest" value="請輸入關鍵字" onkeypress="Search(this.value)" />  我只希望在USER輸入關鍵字後能導入到DefaulteB.aspx,動作很簡單。

    而Search() 這個javascript的function 如下

    Search(strkey)

    {

    if (window.event) { e = event; e.which = e.keyCode; } else if (!e.which) e.which = e.keyCode;
        var code = e.which; // 輸入鍵的 ASCII 碼。
        var char = String.fromCharCode(e.which); // 輸入鍵字元。
        var isAlt = e.altKey; // 是否按下 Alt 鍵。
        var isCtrl = e.ctrlKey; // 是否按下 Ctrl 鍵。
        var isShift = e.shiftKey; // 是否按下 Shift 鍵。

        if (code==13) { // 判斷輸入鍵是否為 Enter 鍵。

            window.location = "DefaultB.aspx?Key=" + strkey;

        }

    }

    在實際跑起來的時候,我隨便在TextBox下隨手輸入字串再按下Enter,然後進入Debut模式。在DefaultA.aspx 及 DefaultB.aspx 的Page_Load下中斷點,這時我看到一開始 DefaultB.aspx先被執行後,然後到一半又換DefaultA.aspx被執行,整個DefaultB.aspx的Page_Load結束後,程序又回到DefaultA.aspx的Page_Load並執行完畢。

    回到頁面一看,頁面還是停留在DefaultA.aspx。不知道各位大大是否遇到過這樣的問題,還請各位不吝提供小弟一點解決的方法。

     

    非常感謝大家  ^^

    2010年7月18日 下午 02:43

解答

  • 皮特你好

    不知道可不可以不用JAVASCRIPT 來做這個 動作?

    如果你在PAGE 上面建立了一個BUTTON

    之後 SET 了這個BUTTON 是DEFAULT 的BUTTON 那麼你便可以 用VB/CSHARP 的 CODE 來實現 導頁 這個動作了

    我有一個SAMPLE CODE 你可以參考

    在你的MASTERPAGE 的TEXTBOX

     <asp:Panel ID="pl_Default" runat="server" defaultbutton="btn_Btn2">
                    <asp:TextBox ID="txt_Text" runat="server" onkeypress="javascript:Search(this.value);" />
                    <div style="display:none"><asp:Button ID="btn_Btn2" Text="Btn2" runat="server" /></div> //如果你不想顯示 這個BUTTON 你可以用 DIV 來HIDE IT
                    </asp:Panel>

    之後在CODE BEHIND 會是這樣的

    Protected Sub btn_Btn2_Click(ByVal sender As Object, ByVal e As EventArgs) Handles btn_Btn2.Click
            Response.Redirect("~/DefaultB.aspx?Key=" + txt_Text.Text.Trim)

        End Sub

    Please forgive me if I mis-understood your questions.


    Chi
    2010年7月18日 下午 03:19
  • 既然 MasterPage 的控制項是 <input>

    表示一定會觸發 postBack(submit) 的事件

    您可以考慮指定一下整個 form 的 PostBackUrl 為 DefaultB.aspx~


    小中中的學習筆記
    2010年7月21日 上午 02:00

所有回覆

  • 皮特你好

    不知道可不可以不用JAVASCRIPT 來做這個 動作?

    如果你在PAGE 上面建立了一個BUTTON

    之後 SET 了這個BUTTON 是DEFAULT 的BUTTON 那麼你便可以 用VB/CSHARP 的 CODE 來實現 導頁 這個動作了

    我有一個SAMPLE CODE 你可以參考

    在你的MASTERPAGE 的TEXTBOX

     <asp:Panel ID="pl_Default" runat="server" defaultbutton="btn_Btn2">
                    <asp:TextBox ID="txt_Text" runat="server" onkeypress="javascript:Search(this.value);" />
                    <div style="display:none"><asp:Button ID="btn_Btn2" Text="Btn2" runat="server" /></div> //如果你不想顯示 這個BUTTON 你可以用 DIV 來HIDE IT
                    </asp:Panel>

    之後在CODE BEHIND 會是這樣的

    Protected Sub btn_Btn2_Click(ByVal sender As Object, ByVal e As EventArgs) Handles btn_Btn2.Click
            Response.Redirect("~/DefaultB.aspx?Key=" + txt_Text.Text.Trim)

        End Sub

    Please forgive me if I mis-understood your questions.


    Chi
    2010年7月18日 下午 03:19
  • 既然 MasterPage 的控制項是 <input>

    表示一定會觸發 postBack(submit) 的事件

    您可以考慮指定一下整個 form 的 PostBackUrl 為 DefaultB.aspx~


    小中中的學習筆記
    2010年7月21日 上午 02:00
  • 感謝各位的熱心解答,我已按照CauBe大大的方法,將整個問題解決。

    謝謝

    2010年7月24日 上午 04:01