這讓我瘋狂!我已經閱讀了至少5個與我的問題密切相關的問題,並且可能僅僅是來自Google搜索的5個或更多頁面。我只是不明白。在更新面板中提交表單後運行javascript?
我想要一個jqueryui對話框出現後,用戶填寫表單說'註冊提交',然後重定向到另一個頁面,但我不能爲我的生活得到任何JavaScript的工作,甚至不是單一警報。
這裏是我的更新面板:
<asp:ScriptManager ID="ScriptManager1" runat="server">
</asp:ScriptManager>
<asp:UpdatePanel ID="upForm" runat="server"
UpdateMode="Conditional" ChildrenAsTriggers="False">
<ContentTemplate>
'Rest of form'
<asp:Button ID="btnSubmit" runat="server" Text="Submit" />
<p>Did register Pass? <%= registrationComplete %></p>
</ContentTemplate>
</asp:UpdatePanel>
jQuery的我要執行:(現在這是坐在標記的頭,用的AutoOpen設置爲false)
<script type="text/javascript">
function pageLoad() {
$('#registerComplete').dialog({
autoOpen: true,
width: 270,
resizable: false,
modal: true,
draggable: false,
buttons: {
"Ok": function() {
window.location.href = "someUrl";
}
}
});
}
</script>
最後我的代碼背後:(註釋掉所有我試過的東西)
Protected Sub btnSubmit_Click(ByVal sender As Object, ByVal e As EventArgs) Handles btnSubmit.Click
'Dim sbScript As New StringBuilder()'
registrationComplete = True
registrationUpdatePanel.Update()
'sbScript.Append("<script language='JavaScript' type='text/javascript'>" + ControlChars.Lf)'
'sbScript.Append("<!--" + ControlChars.Lf)'
'sbScript.Append("window.location.reload()" + ControlChars.Lf)'
'sbScript.Append("// -->" + ControlChars.Lf)'
'sbScript.Append("</")'
'sbScript.Append("script>" + ControlChars.Lf)'
'ScriptManager.RegisterClientScriptBlock(Me.Page, Me.GetType(), "AutoPostBack", sbScript.ToString(), False)'
'ClientScript.RegisterStartupScript("AutoPostBackScript", sbScript.ToString())'
'Response.Write("<script type='text/javascript'>alert('Test')</script>")'
'Response.Write("<script>windows.location.reload()</script>")'
End Sub
我試過了:
通過行內<%=%>在 JavaScript的頭標記的塊傳遞變量從服務器到客戶端 。
將同一代碼放入updatePanel中的腳本
標記。儘量選用
的RegisterClientScriptBlock和
的RegisterStartupScript只是做寫在它的 腳本標籤的Response.Write。
試圖把 整個jquery.dialog代碼在 registerstartup腳本,或者只是
試圖改變的AutoOpen
財產,或者只是呼籲
其「開放」的各種組合。
我什至不能得到一個簡單的警報與任何這些工作,所以我做錯了什麼,但我只是不知道它是什麼。
這是我所知道的:
jQuery的甚至 在異步回發正確結合,因爲在div 容器,它的對話框是 總是看不見的,我看到了一個類似的 後這裏指出這是造成 的一個問題,這裏不是這種情況。
使用的Page_Load,而不是
的document.ready因爲這是應該 到兩個異步和正常
回發運行,所以這不是問題。更新面板正在更新 ,因爲
<p>Did register Pass? <%= registrationComplete %></p>
在我提交表單後<p>Did register Pass? <%= registrationComplete %></p>
更新爲true。
那麼我該如何做這項工作?我想要的是 - >單擊更新面板內的提交按鈕 - >運行服務器端代碼來驗證表單並插入到數據庫 - >如果一切成功,有jQuery(模態)對話框彈出說嘿它的工作。
@Nick:不知道爲什麼,但註冊異步回發上的JavaScript從來沒有工作給我,除非我使用參數更新面板的類型(UpdatePanel1.GetType()) – 2010-05-08 17:10:29
@Claudio - 取決於它從哪裏被調用,應該從一個參與更新的控件,更新面板本身並不是一個不錯的類型,所以是可行的:) – 2010-05-08 17:12:04
對於具有'UpdatePanels'的頁面,您應該使用'ScriptManager'而不是'ClientScript'。 – lincolnk 2010-05-08 20:11:59