[英]How do you programmatically Invoke a Server Click via JQuery or Javascript
我在用戶控件上有一個ASP Server按鈕,該按鈕可觸發正常工作的服務器端OnClick事件。 但是我需要使用JavaScript或JQuery觸發OnClick事件。
我嘗試了以下方法,但是都沒有像用戶要實際單擊按鈕那樣實際模擬結果:
document.getElementById('<%=btnRefresh.ClientID%>').click();
$('#<%=btnRefresh.ClientID %>').click();
我懷疑這可能是因為它模擬了OnClientClick事件,而不是服務器。 但我發現這種說法對成功觸發服務器端OnClick事件的其他人有用,但對我而言卻無效。
還有其他方法可以完成任務嗎?
回應AJAX的建議。 我已經嘗試過這種方法,但是要成功完成此任務,需要使用PostBack。 實際單擊按鈕會產生所需的結果,我可以使事件使用AJAX觸發,但如果沒有PostBack元素,它將失敗。
我有一個ASP服務器按鈕
所以你有類似的東西
<asp:Button ID="btnRefresh" Text="I'm a button" OnClick="btnRefresh_Click" />
為了也執行客戶端調用,在服務器調用之前,您需要做的就是將函數或內聯代碼附加到OnClientClick
屬性上:
<asp:Button ID="btnRefresh"
Text="I'm a button"
OnClick="btnRefresh_Click"
OnClientClick="btnRefreshClick" />
並在您的javascript中簡單地添加該方法
function btnRefreshClick() {
// your stuff goes here...
return true; // returning true (or nothing) will fire the server side click
// returning false will not fire it
}
補充:誤解了這個問題,因此您想觸發一個JavaScript事件,該事件將自動click
按鈕...
我剛剛測試了這段代碼:
<body>
<form id="form1" runat="server">
<div>
<asp:Button ID="Button1" runat="server" Text="Button" OnClick="Button1_Click" /><br />
<asp:Label ID="Label1" runat="server" Text="Label"></asp:Label>
<br/>
<a href="#" class="a">fire button click event</a>
</div>
</form>
<script>
$(".a").click(function() {
//var elm = $("#" + "<%= Button1.ClientID %>"); elm.click(); // with jQuery
var elm = document.getElementById('<%=Button1.ClientID%>');
elm.click();
});
</script>
</body>
而且無論是否使用jQuery,我都能正確觸發按鈕:
正在執行的截屏視頻: http : //screencast.com/t/m4ohA9uW
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.