2011-09-13 13 views
0

私は検索ボックスとして使用しているテキストボックスをmasterpageに持っています。ユーザーがenterを押すと、urlパラメタの検索語句を含む他のページにリダイレクトします。response.redirectはpage_loadでページ上で動作しません

問題独自のpage_loadサブを持たないページでのみ問題が発生するようです。マスターページのPage_Loadの、IN

  <div id="search-bar"> 
       <asp:TextBox ID="txtSearch" runat="server" Text=""></asp:TextBox> 
       <asp:Button ID="btnSearch" runat="server" style="display:none"/> 
      </div> 

ユーザーを押すが、それはそれはIEのみをPage_Loadを持っていないページ上で動作しますbtnSearch_Click

function do_search() { 
     if (event.keyCode == 13) { 
      var invisibleButton = document.getElementById('<%=btnSearch.ClientID %>'); 
      __doPostBack(invisibleButton.name, ''); 
     } 
    } 


Protected Sub btnSearch_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btnSearch.Click 
    If Trim(txtSearch.Text) <> "" Then 
     Response.Redirect("viewall.aspx?q=" & txtSearch.Text, True) 
    End If 
End Sub 

を呼び出す入るようにjavascript関数

txtSearch.Attributes.Add("onKeyDown", "do_search(this)") 

page_loadのページではresponse.redirectが発生しません。

アイデア?

答えて

1

上記のお返事ありがとうございますが、動作していないようです。私は最終的にこの記事でこのことを知りました...それは不思議な問題であり、ブラウザに関連しています。

http://www.pcreview.co.uk/forums/response-redirect-not-working-pressing-enter-key-t2888253.html

第三のポストダウン:

は、「私は、 パネル内のコントロールをラップしようとしたパネルののDefaultButtonを設定し、それはそれ がIEでの作業を取得するように見えました。」

   <asp:Panel ID="Panel1" runat="server" DefaultButton="btnSearch"> 
        <asp:TextBox ID="txtSearch" runat="server" Text=""></asp:TextBox> 
        <asp:Button ID="btnSearch" runat="server" Style="display: none" /> 
       </asp:Panel> 

...、それが動作します:次のように

マイページには、今あります!最後に。

+0

DefaultButtonプロパティを設定すると、ページにjavascriptが追加され、form.submitが実行されます。私はそれがうまくいってもうまくいきますが、窓があります。位置づけのアプローチも働かなくてはなりません。あるいは、アルコールを飲むことをやめます。 – Icarus

1

全体がサーバーに移動してリダイレクトすることを避けることができます。あなたは、単にこれを行うことができます。

function do_search() { 
     if (event.keyCode == 13) { 
      var textbox = document.getElementById('<%=txtSearch.ClientID%>'); 
      if(textbox!=null) 
      window.location('viewall.aspx?q='+textbox.value); 
     } 
    } 
+0

ああ、良い考え。 –

+0

KISS法FTW! –

+0

ええ、私は試したが、それはまだ同じページにとどまっている...信じられない。 – thegunner

0

あなたは__doPostBackが使用されるたびに呼び出されRaisePostBackEventメソッドを使用して試すことができます。

protected override void RaisePostBackEvent(IPostBackEventHandler source, string eventArgument) 
{ 
    //call the RaisePostBack event 
    base.RaisePostBackEvent(source, eventArgument); 

    if (source == btnSearch) 
    { 
     Response.Redirect("..."); 
    } 
} 
関連する問題