的document.getElementById('按钮')。点击();不会触发Code-Behind

时间:2014-12-16 10:48:06

标签: javascript asp.net vb.net

我是编码javascript / VB.NET的新手,我在使用Button2 onClick事件时遇到了麻烦。

View.aspx.vb中的Button1的Click-Behind Click事件

Protected Sub _lnbComments_Click(ByVal sender As Object, ByVal e As System.EventArgs)
           //Some Code that needs to run before opening Modal Page
           Dim Script As String = "JavaScriptCode();"
           ScriptManager.RegisterStartupScript(Me.upnToolBar, Me.upnToolBar.GetType(), "CommentsClick", Script, True)
End Sub

JS档案

function ShowModal(page,name,style){
    var r = window.showModalDialog(page,window,style);
}
function JavaScriptCode(){
    var jsButton = document.getElementById('ct100_SiteContent__hiddenBtnComments'); //I made sure ClientID is correct
    jsButton.click() //This should trigger onClick event and OPEN modalPage
}

PageOasad of Page.aspx

Me._hiddenBtnComments.Attributes.Add("onclick","ShowModal('SomePage.aspx','SomePage','somestyle')")

问题是只有Javascript代码被触发并且Modal页面被打开。但是,在关闭模态页面后,不会触发代码隐藏单击事件。任何想法代码有什么问题?

Page.aspx按钮2标记

<asp:Button id="_hiddenBtnComments" runat="server" style="display:none" onclick="_hiddenBtnComments_click"></asp:Button>

在Page.aspx.vb

中为Button2单击事件代码
Protected Sub _hiddenBtnComments_click(ByVal sender As Object, ByVal e As System.EventArgs) Handles _hiddenBtnComments.Click
//Some Code that needs to run AFTER Modal Page closes.
End Sub
编辑:我的一位朋友建议使用window.open而不是window.showmodaldialog(),然后触发代码隐藏点击事件!但是,我需要使用window.showmodaldialog,因为它将是用户期望的,

2 个答案:

答案 0 :(得分:1)

click()不会在JavaScript中触发Click事件。使用jQuery或使用dispatchEvent请参阅此帖子:How to simulate a click with JavaScript?

答案 1 :(得分:0)

为什么不调用ShowModal函数而不是触发事件?

如果您需要动态获取参数,可以向元素添加数据属性。