触发一个asp:按钮单击事件使用JavaScript(Trigger an asp:button c

2019-09-22 13:48发布

我目前的工作在其需要触发一个asp的一个项目:在JavaScript代码做了一系列的事件后,点击按钮事件。

下面请看我的代码:

这是我的按钮,它的Click事件:

<asp:Button ID="btnRefresh" name="btnRefresh" runat="server" Text="btnRefresh" onclick="btnRefresh_Click" />

protected void btnRefresh_Click(object sender, EventArgs e)
{
    MyGrid.DataSource = null;
    MyGrid.DataSource = GetDataForGrid();
    MyGrid.DataBind();
}

我曾经引用保存用于该页面所有我的JavaScript代码的JavaScript文件。 我做这种方式,因为我真的不喜欢我的.aspx文件在我的javascript代码混合起来。

这是函数怎么看起来像我的外部.js文件:

function Refresh() {
    var btn = $(document).getElementById('btnRefresh');
    if (btn) {
        btn.click();
    }
    else {
        alert('false');
    }
}

我也尝试过其他的方法,我在互联网上看到了如下所有这些,没有运气的:

document.getElementById('btnRefresh');
__doPostBack('btnRefresh', '');
__doPostBack('btnRefresh', 'Click');
$('#btnRefresh').click();

可有人请点我一个很好的办法做到这一点? 谢谢!

编辑:

我想要做的是这样的:我有一个UpdatePanel内一个gridview。 我已经被点击btnRefresh时被触发的触发器。 所以基本上,它刷新我的GridView控件。 因此,我不能使用该按钮的OnClick属性调用我的javascript功能,因为我不会点击摆在首位的按钮。 我需要能够调用btnRefresh_Click从我的外部JavaScript事件让我的触发,将被解雇更新我的GridView控件。

编辑2:

我试图定义我的btn使用下面的一行在.aspx页面本身:

为BTN = $( “#”);

我也改变了我的JS代码如下:

函数刷新(){如果(BTN){btn.click(); } else { alert('false'); }其他{警报( '假'); }}

JS的能够看到btn并通过事件线路去btn.click()但是,我btnRefresh_Click仍然没有火起来。 我失去了一些东西在这里?

Answer 1:

在这里,您可以使用OnClientClick属性和提及的功能名称,即在外部JS调用,因为这个属性服务器端事件的执行之前实际执行。



Answer 2:

看看的ClientID属性。

您可以使用属性来获取在客户端按钮的ID,并使用ID触发点击。

function Refresh() {
    var btn = $("#<%=btnRefresh.ClientID%>");
    if (btn) {
        btn.click();
    }
    else {
        alert('false');
    }
}

但要留意的是<%=btnRefresh.ClientID%>只能在同一页上工作btnRefresh ,而不是在外部JS文件。 ClientID的动态ASP.NET生成。



Answer 3:

既然你引用的JS文件,你有两个选择。 无论是通过按钮的ClientID或设置按钮的ClientIDModeStatic

我建议你在id的JS函数传递。

function Refresh(id) {
    var btn = $(document).getElementById(id);
    if (btn) {
        btn.click();
    }
    else {
        alert('false');
    }
}

当你想它调用另一个JS功能,通过在ClientID

function doSomthing(){
    //do this
    //do that
    Refresh('<%=btnRefresh.ClientID%>');
}

但正如你说,如果你不喜欢把JS在你的aspx页面,则只需设置你的按钮的ClientIDMode = Static

<asp:Button ID="btnRefresh" ClientIDMode="Static" name="btnRefresh" runat="server" Text="btnRefresh" onclick="btnRefresh_Click" />


Answer 4:

下面是一个“黑客”我已经在过去使用

该按钮是可见的客户端会

<input type="button" id="btPart1" value="Trigger Phase 1" 
    onclick="clicked()" class="btn btn-default" />

定义在Web表单如按钮

<asp:button id="Triggered" runat="server" OnClick="btnRefresh_Click"
    Style="visibility: hidden;"/>

在JavaScript中,你将有

function clicked(){
    document.getElementById("ctl02_Triggered").click();
}

根据您正在使用的ID将改变其ASP的版本,所以一定要检查按钮的实际ID,这样就可以通过JS触发它。 我提到这一点,因为在编译时ASP实际上会改变你已经过基于什么样的父母它给出的ID。



Answer 5:

事实上,你必须确保你运行任何JS方法之前DOM被加载。 因此,请确保您的js文件包含在你的DOM(HTML)的结束。

由于btnRefresh按钮服务器控件,您需要通过参考其clientIDRefresh方法,

var btn= document.getElementById(‘<%=btnRefresh.ClientID=%>’);

但是你的代码并不显示你如何调用Refresh方法。 所以,我希望上面的帮助你。 或者你需要表现出更多的代码。



文章来源: Trigger an asp:button click event using javascript