2013-03-07 91 views
0

我在頁面上使用了AjaxControlToolkit.HTMLEditor,但取決於某些變量,編輯器的Visible控件可以在代碼隱藏中設置爲false。我得到的HTML編輯參考在Javascript中,像這樣如何判斷頁面上是否加載了AjaxControlToolkit.HTMLEditor

var email = $get('<%=TemplateEditor.ClientID%>').control; 

,但我需要一種方法來告訴我們,如果控件加載頁面上與否。如果不是,我不想調用上面的代碼,因爲它會出錯。任何人都可以告訴我如何在JavaScript中測試控件是否加載在頁面上?

回答

1

您應該可以檢查頁面上是否存在Sys.Extended.UI.HTMLEditor。如果編輯器不可見,我認爲腳本不會被加載。

if(typeof Sys.Extended.UI.HTMLEditor !== "undefined") { 
    // editor exists on page 
} 

編輯

與JavaScript控制檯$get()修修補補似乎返回null $get()無法找到您所提供的ID控制。也許嘗試:

var editor = $get('<%=TemplateEditor.ClientID%>'); 
if(editor !== null) { 
    var email = editor.control; 
    // you'll probably want to do more processing here. 
} 
+0

但是,如果在頁面中存在另一個HTMLEditor(並且是可見的),則錯誤再次拋出。 – 2013-03-07 22:33:46

+0

沒有想到多編輯器支持。我用另一種解決方案更新了答案。 – 2013-03-08 00:01:16

+1

謝謝,史蒂文,這正是我正在尋找的。我已經使用了你的第二個建議,它運行得非常漂亮。我還沒有測試過你的第一個建議,但是如果頁面上只有一個HTMLEditor,我想它也可以很好地工作。 – Melanie 2013-03-08 15:05:31

1

這是一個壞把戲,但我認爲工作..

放置一個<asp:HiddenField>到頁面中,並設置Value屬性爲「真」或「假」的代碼,你改變的Visible屬性背後TemplateEditor。

後,簡單地說:

var isVisible = $get('<%=HiddenField.ClientID%>').value; 
var email; 

if (hiddenFieldValue == "True") 
    email = $get('<%=TemplateEditor.ClientID%>').control; 

希望這有助於!

+0

這實際上發生在我身上,我正在尋找一個更「官方」的解決方案,但它會工作。謝謝! – Melanie 2013-03-08 14:52:45

相關問題