2009-04-06 10 views
0

私は検索コントロールで遊んでいましたが、テキストボックス内でenterを押すとフォームを送信しても検索ボタンをクリックしないことに気付きましたそれにしたい)。JQueryを使用してaspを呼び出す:linkbutton click function

私のマークアップは次のとおりです。

<div> 
    <span>Search</span> 
    <asp:TextBox ID="txtSearch" runat="server" Width="170" 
     onkeydown="if ((event.which && event.which == 13) || (event.keyCode && event.keyCode == 13)) {$('#<%=lkbSearch.ClientID %>').click();return false;} else return true; "> 
    </asp:TextBox> 
</div> 
<asp:LinkButton ID="lkbSearch" runat="server" CssClass="searchButton"> 
    <asp:Image ID="imgSearch" runat="server" ImageUrl="~/Images/Master/button_go.gif" /> 
</asp:LinkButton> 

私は、テキストボックスにOnKeyDownイベントを追加し、それが実行されますが、私はそれが何もしないボタンからクリック()関数を呼び出すためにjQueryのを使用しようとします。

ボタンをクリックするテキストボックスで入力を押すとどうすればいいですか?

答えて

0

:-) ClientScript.GetPostBackEventReference

幸運を使用することができます失敗。

asp:panelコントロールでテキストボックスとボタンをラップし、デフォルトボタンをmy LinkBut​​tonのIDに設定するだけで、パネルがDefaultButtonとしてLinkBut​​tonを持つことができません。

しかし、LinkBut​​tonをImageButtonに変更し、そのIDをPanelのDefaultButtonフィールドで使用すると、完全に機能します。 LinkButton<a>としてページに追加されているので

<asp:Panel ID="pnlSearch" runat="server" DefaultButton="imbSearch"> 
... 
</asp:Panel> 
+0

ファイアーフォックスではうまくいかない! – Shawn

+0

Firefoxは私が使用するデフォルトのブラウザで、うまくいきました... – dkarzon

+0

それは私のためにFirefoxでは動作しませんが、ieとchromeで動作します。なにか提案を –

1

これは、私はあなたがのDefaultButton属性がありますパネルを持っている場合は、DIVにいる参照jQueryの

Page.RegisterHiddenField("__EVENTTARGET", lkbSearch.ClientID); 

を必要としません。

あなたが本当にjQueryのを使用したい場合、あなたは私が最終的に解決策を考え出したいくつかの異なるもので遊んで後

+0

しかし、私はそれが使用されているすべてのページでそのテキストボックスに対してのみ設定できますか?私は言及することを忘れていた、これは私のマスターページ(ので、サイトのすべてのページで)で使用されるサーバーコントロール内です – dkarzon

+0

はい、私のコードは、それをデフォルトのアクションにするためです。私は、パネルとdefaultbuttonはまだokでも簡単かもしれないと思うし、GetPostBackEventReferenceを使ってキーコードがEnterキーであるときに呼び出すことができる。 –

1

。 jQueryを使用してボタンを選択すると、jQueryでラップされた要素が取得されます。その呼び出しのため、clickイベントは、hrefに従わずにclickイベントをトリガーするだけです。

次のコードは、ボタンのクリックをシミュレートします:あなたは正しい要素を取得する任意のセレクターで'#<%= linkbuttonid.ClientID%>'を置き換えることが

$('#<%= linkbuttonid.ClientID%>')[0].click(); 

。ただし、<a>でクリックが呼び出されるように、[0]を含める必要があります。

代わりに、あなたはHREFにページを再ルーティングできます。

window.location = $('yourselector').attr('href'); 

はJavaScriptでアンカータグのクリックイベントを呼び出すための詳細については、this questionを参照してください。

関連する問題