2017-09-08 16 views
1

私はテキストボックスを持っています。私は関数をonkeyupと呼びたいので、別のC#関数にリダイレクトしようとしている隠しボタンがあります。問題はjqueryが関数の中に入ることですが、その後サーバー側のイベントには行きません。jqueryでリンクボタンをクリックする

function runQuery(e) { 
    $('#hiddenButton').click(); 
} 

とボタンのクリック用のC#:アヤックスと

protected void hiddenButton_Click(object sender, EventArgs e) 
{ 
    AutoComplete_Press(tbCliName.Text); 
} 

EDIT:

    <div class="row" style="margin-top: 5px;"> 
         <div class="col-sm-12"> 
          <div class="input-group input-group-sm"> 
           <span class="input-group-addon">Име:</span> 
           <asp:TextBox ID="tbCliName" ClientIDMode="Static" runat="server" onkeyup="runQuery(this)" CssClass="form-control"></asp:TextBox> 
           <asp:LinkButton ID="hiddenButton" class="btn btn-default" Style="opacity: 0;" ClientIDMode="Static" OnClick="hiddenButton_Click" runat="server"></asp:LinkButton> 
           <span class="input-group-addon">Егн/Булстат:</span> 
           <asp:TextBox ID="tbEgnBStat" ClientIDMode="Static" runat="server" CssClass="form-control"></asp:TextBox> 
          </div> 
         </div> 
        </div> 

はここに私のjqueryの目的球です:

はここで両方の要素のための私のHTMLです

楽しいction runQuery(e){ var search = $(e).val();

function runQuery(e) { 
    var search = $(e).val(); 
    var params = { 

     url: 'addEditProduct.ascx/AutoComplete_Press', 
     method: 'post', 
     contentType: 'aapplication/json', 
     data: '{searchClause:' + search + '}', 
     dataType: 'json', 
     success: function (data) { 
      alert(1); 
     }, 
     error: function (data) { 
      alert(2); 
     } 
    }; 

    $.ajax(params); 
} 



    [WebMethod] 
    public static void AutoComplete_Press(string searchClause) 
    { 
     int searchType = 0; //ЕГН 
     int csKind = 0; 

     Regex regex = new Regex("^[0-9]+$"); 
     if (!regex.IsMatch(searchClause)) 
      searchType = 1; 

     //if (rbLP.Checked) 
     // csKind = 1; 

     string clients = laboratory.getClients2(searchType, searchClause, 1); 
    } 
+1

のjQueryのAjaxを試してみてください「jQueryは関数内に入ります」という意味はどうですか?どのように具体的にこれが失敗するのでしょうか?クリックされた要素のHTMLは何ですか? – David

+0

クリックされる要素は、hiddenButtonです。私は "デバッガ"を置く場合と同様に、jquery関数の中に入ります。それはそこで止まる。 –

+0

しかし、問題の要素の実際のHTMLは何ですか? "jQuery関数の内部"とは、 'runQuery'関数が実行されていることを意味しますか? jQueryのセレクタは、デバッグするときに何かを見つけますか? – David

答えて

1

ウェブメソッドを使用してみてください。

[WebMethod] 
public static void BindData() 
{ 
    AutoComplete_Press(tbCliName.Text); 
} 

とクライアント側でサーバ側で

$("#hiddenButton").click(function() { 
     $.ajax({ 
      type: "POST", 
      url: "index.aspx/BindData", 
      contentType: "application/json; charset=utf-8", 
      data: JSON.stringify({/*pass values here*/}), 
      dataType: "json",  
     }); 
    }); 

は、下のリンクを参照してください https://www.aspsnippets.com/Articles/Calling-server-side-methods-using-JavaScript-and-JQuery-in-ASP.Net.aspx

+0

私は今これを試して、それがうまくいくかどうか教えてくれるでしょう。 –

+0

私は静的でないフィールドには言及できないので、これはうまくいきません。 –

+0

あなたのコードを投稿することができます – Dotnetpickles

1

あなたとa要素としてレンダリングされasp:LinkButtonを使用していること、それが動作していない理由は、 href属性はjavascript:__doPostBack()に設定されています。

asp:LinkButtonasp:Buttonに変更すると、$('#hiddenButton').click();が呼び出されます。

はちょうどあなたがこのように関数を呼び出すことができなくイベント は、Webメソッドを作成します

<asp:LinkButton ID="hiddenButton" class="btn btn-default" Style="opacity: 0;" ClientIDMode="Static" OnClick="hiddenButton_Click" runat="server"></asp:LinkButton> 

この

<asp:Button ID="hiddenButton" class="btn btn-default" Style="opacity: 0;" ClientIDMode="Static" OnClick="hiddenButton_Click" runat="server"></asp:Button> 
1

にこのコード行を変更し、

var params = { 
       url: 'Index.aspx/YourWebmethod', 
       type: "POST", 
       contentType: "application/json; charset=utf-8", 
       dataType: "json", 
       traditional: true, 
       data: JSON.stringify(data to be send), 
       success: function (result) { 
        alert('Success'); 
       }, 
       error: function (result) { alert('Warning! It failed.'); } 
      }; 
      $.ajax(params); 
関連する問題