使用javascript触发asp:按钮单击事件
我目前正在从事一个项目,该项目需要在javascript代码中执行一系列事件后触发asp:button click事件 请参阅下面我的代码: 这是我的按钮及其单击事件:使用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
<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=%>’);