繁体   English   中英

使用jquery调用linkbutton单击

[英]Calling a linkbutton click with jquery

我有一个文本框,我想要一个函数被调用onkeyup,因此我有一个隐藏按钮,试图重定向到另一个c#函数。 问题是jquery进入函数内部,但后来没有进入服务器端事件。

这是我的两个元素的HTML:

                    <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功能:

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

按下按钮的C#:

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

使用Ajax编辑:

function 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);
    }

尝试使用webmethod。 在服务器端

[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

它不起作用的原因是你使用的是asp:LinkButton ,它被渲染为href属性设置为javascript:__doPostBack() a元素。

如果你将asp:LinkButton替换成asp:Button调用$('#hiddenButton').click(); 将开始工作。

只需更改此行代码即可

<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>

您可以调用此类函数,但不能调用事件创建Web方法并尝试Jquery Ajax

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);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM