Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/463.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用javascript触发asp:按钮单击事件_Javascript_Jquery_Click_Aspbutton - Fatal编程技术网

使用javascript触发asp:按钮单击事件

使用javascript触发asp:按钮单击事件,javascript,jquery,click,aspbutton,Javascript,Jquery,Click,Aspbutton,我目前正在从事一个项目,该项目需要在javascript代码中执行一系列事件后触发asp:button click事件 请参阅下面我的代码: 这是我的按钮及其单击事件: <asp:Button ID="btnRefresh" name="btnRefresh" runat="server" Text="btnRefresh" onclick="btnRefresh_Click" /> protected void btnRefresh_Click(object sender, Ev

我目前正在从事一个项目,该项目需要在javascript代码中执行一系列事件后触发asp:button 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();
}
我还尝试了我在互联网上看到的其他方式,如下所示,所有这些都没有运气:

document.getElementById('btnRefresh');
__doPostBack('btnRefresh', '');
__doPostBack('btnRefresh', 'Click');
$('#btnRefresh').click();
有人能告诉我一个好方法吗?谢谢大家!

编辑:

我想做的是: 我在UpdatePanel中有一个gridview。我有一个触发器,当点击btnRefresh时触发。所以基本上,它刷新了我的gridview。因此,我不能使用按钮的OnClick属性来调用javascript函数,因为我不会首先单击按钮。我需要能够从我的外部javascript调用
btnRefresh\u Click
事件,以便触发我的触发器来更新我的GridView

编辑2:

我尝试在.aspx页面上使用以下行定义我的
btn

var btn=$(“#”); 我还更改了我的JS代码,如下所示:

函数刷新(){ 如果(btn){ 点击(); } 否则{ 警报(“假”); }}

js能够看到
btn
,它的事件通过
btn.click()行进行
但是,我的
btnRefresh\u单击仍然没有启动。我在这里遗漏了什么吗?

在这里,您可以使用OnClientClick属性并提及要调用的外部js中的函数名,因为此属性实际上是在执行服务器端事件之前执行的

看看这个酒店

您可以使用该属性获取客户端按钮的ID,并使用该ID触发单击

function Refresh() {
    var btn = $("#<%=btnRefresh.ClientID%>");
    if (btn) {
        btn.click();
    }
    else {
        alert('false');
    }
}
函数刷新(){
var btn=$(“#”);
如果(btn){
点击();
}
否则{
警报(“假”);
}
}

但是请注意,
只能在与
btnRefresh
相同的页面上工作,而不能在外部JS文件中工作。ClientID是由ASP.NET动态生成的。

因为您引用了JS文件,所以有两个选项。传入按钮的
ClientID
或将按钮的
clientMode
设置为
Static

<asp:Button ID="btnRefresh" ClientIDMode="Static" name="btnRefresh" runat="server" Text="btnRefresh" onclick="btnRefresh_Click" />
我建议您将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%>');
}

这是我过去使用过的一个“黑客”

客户端可见的按钮将是

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

根据您使用的asp版本,ID将发生变化,因此请确保检查按钮的实际ID,以便通过js触发它。我之所以提到这一点,是因为在编译时,ASP实际上会根据它的父级转换您提供的ID。

实际上,您必须确保在运行任何JS方法之前加载DOM。因此,请确保您的js文件包含在DOM(html)的末尾

由于
btnRefresh
按钮是服务器控件,您需要通过
Refresh
方法中的
clientID
来引用它

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

但是您的代码没有显示如何调用
Refresh
方法。所以我希望上面的内容能帮助你。或者您需要显示更多代码

实际上,这个按钮是隐藏的。请看我的编辑上面。我添加了一些关于我希望代码如何工作的注释。谢谢你的回复!:)我也试过这个。但是,我使用的是一个外部JS文件。幸运的是,你知道实现这一目标的方法吗?谢谢。在页面中定义javascript按钮变量。我尝试过,但我的
btnRefresh\u单击事件仍然无法启动。请参阅上面我的编辑:(但是我如何才能将
ClientID
从我的.aspx文件传递到外部的.js文件,而不必在.aspx文件中创建额外的js函数呢?谢谢。如何以及在哪里调用刷新js函数?
<asp:button id="Triggered" runat="server" OnClick="btnRefresh_Click"
    Style="visibility: hidden;"/>
function clicked(){
    document.getElementById("ctl02_Triggered").click();
}
var btn= document.getElementById(‘<%=btnRefresh.ClientID=%>’);