0

ページに検索テキストボックスと検索ボタンがあります。ユーザーが検索文字列を入力して Enter キーを押したときに、サーバー側のボタン クリック イベントを発生させる必要があります。コードはユーザー コントロール (ascx) にあります。コードは....

ascx

<td class="search_txt_box">
  <asp:TextBox ID="txtSearchBox" class="frmdefault" runat="server"
               MaxLength="100" Width="300"></asp:TextBox>
</td>
<td class="new_search_btn">
  <asp:LinkButton ID="btnSearchHelp" class="ovalbutton" runat="server"
            OnClick="btnSearchHelp_Click">
    <span id="spanBtnTxt" runat="server" class="btn_arrow_space"></span>
  </asp:LinkButton>
</td>

JQuery

  (function ($) {
     $(function () {
          $('input[id$="txtSearchBox"]').keypress(function (e) {
        var keyCode;

        if (window.event) keyCode = window.event.keyCode;
        else if (e) keyCode = e.which;
        else return true;

        if (keyCode == 13) {
            //alert("Out - Clicked");
            //alert($('[id*="btnSearchHelp"]').attr('id'));

            $('[id*="btnSearchHelp"]').click();
            return false;
            //$('[id*="btnSearchHelp"]').on('click', 'a', function (e) {
            //    alert('this is the click');
            //    e.preventDefault();
            //});
        }
    });
     });
  } (jQuery));

ascx.cs

protected void btnSearchHelp_Click(object sender, EventArgs e)
{
   //handle search click
}

フォーラムで回答を探してみましたが、いくつか試してみましたが、どれもうまくいきませんでした. 「Out-Clicked」アラートとボタンの動的 ID を持つ次のアラートが表示されますが、その後は何も起こりません。インライン Jquery 関数を作成しましたが、それも呼び出されていません。ここで私たちが間違っていることを誰か教えてください。

4

3 に答える 3

0

問題は、リンク ボタンの使用によるものです。

リンクボタンがレンダリングされると、次のようになります

<a id="btnSearchHelp" class="ovalbutton" href="javascript:__doPostBack('btnSearchHelp','')"><span id="spanBtnTxt">

JS からのクリック イベントは、onclick属性で定義されたハンドラーをトリガーします。あなたの場合、 href 属性が定義されており、 href 属性はトリガーされません。

オプション:

1) asp:link ボタンの代わりに asp:button を使用できます。

2) $('[id*="btnSearchHelp"]').click(); の代わりに以下のコードを使用してください。

var submitButton = $('[id*="btnSearchHelp"]');
var events = submitButton.data('events');
                if (submitButton.get(0).onclick) {
                    eval(submitButton.get(0).onclick());
                }
                if (events != null && events.click != null && events.click.length > 0) {
                    $(submitButton).trigger(events.click);
                    $.each(events.click, function (index, evt) {
                        evt.handler();
                    });
                }

                if ($.trim(submitButton.attr("href")) != "") {
                    if (submitButton.attr("href").toString().toLowerCase().indexOf("javascript:") != -1) {
                        eval(submitButton.attr("href"));
                    }
                }

お役に立てば幸いです。

于 2013-01-24T07:27:28.417 に答える
0

マークアップを変更しても問題ない場合は、フォーム要素で検索入力をラップし、そのフォームでsubmit()イベントを使用できます。

そうすれば、Return を押すことと「検索」ボタンをクリックすることの両方でイベントが発生します。

于 2012-11-26T06:32:31.410 に答える
0

あなたの問題はここにあると思います:

(function ($) { 

      //you are trying to capture domready function in this
      //This is actually a way to author a jQuery Plugin

} (jQuery));
      //  ^-------------------------
      // although you have put one extra paranthesis ")" at the closing
      // this doesn't matter this won't work if you remove it though

If you are using different js librariesそして、あなたはfacing issues of conflict図書館にいるのでsave your '$' sign、上記のようにこの閉鎖に入る必要があります。と同じyou can do with your doc ready機能ですがthis way

jQuery(function($){

   // I just used a simple alert function to test
   // You can do your stuff here.
   alert('123');
});

$ここにサインを同封しています。このようにして、他のライブラリと競合しないようにすることができます。

詳細はこちら: http://docs.jquery.com/Plugins/Authoring

于 2012-11-26T07:21:42.510 に答える