2013-03-07 88 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

相关问题