首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >是否有办法防止TinyMCE在页面加载时自动聚焦?

是否有办法防止TinyMCE在页面加载时自动聚焦?
EN

Stack Overflow用户
提问于 2012-06-08 07:07:24
回答 2查看 6.4K关注 0票数 11

我的表单上有许多输入字段,其中之一是使用TinyMCE (版本3.5.2)。一旦TinyMCE加载,它就会为自己设置焦点。我怎样才能防止这种情况发生呢?我希望保留默认选择的第一个输入。

这就是我现在的代码

代码语言:javascript
运行
复制
var tinymce = $('#Content');
tinymce.tinymce({
    theme: "advanced",
    plugins: "...",
    theme_advanced_buttons1: "...",
    theme_advanced_buttons2: "...",
    theme_advanced_buttons3: "...",
    theme_advanced_buttons4: "...",
    theme_advanced_toolbar_location: "top",
    theme_advanced_toolbar_align: "left",
    theme_advanced_statusbar_location: "bottom",
    theme_advanced_resizing: true,
    content_css: [...],
    template_external_list_url: "lists/template_list.js",
    external_link_list_url: "lists/link_list.js",
    external_image_list_url: "lists/image_list.js",
    media_external_list_url: "lists/media_list.js",
    template_replace_values: {
        username: "Some User",
        staffid: "991234"
    }
});

更新:

经过更多的测试后,看起来这个问题只出现在IE9中。Chrome,FireFox,Opera & Safari不会在页面加载时为编辑器设置焦点。IE9在IE7和IE8模式下也不会在页面加载时设置焦点,但是即使您试图将焦点设置为另一个输入,IE9本身也会将焦点设置为编辑器。

但是,当您在textarea中使用值加载页面时,这一切都会发生变化。当您这样做时,IE9就像其他浏览器一样工作。现在,我在textarea中用一个空格加载页面,这使IE9正常工作。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-06-08 17:41:10

可以帮助您获得其余的输入和表单结构,以了解更好的方法,但这方面的一些内容应该会有所帮助:

jQUERY

代码语言:javascript
运行
复制
function myCustomOnInit() {
    $('form *:input[type!=hidden]:first').focus();
}

tinyMCE.init({
        ...
        oninit : myCustomOnInit
});

来自文档

此选项使您能够指定在所有编辑器实例完成初始化后要执行的函数。这很像HTML页面的onload事件。 注意:,您也可以将函数名作为字符串传递。但是在这种情况下,函数必须在页面的全局范围内声明。

这里的诀窍是为第一个可见输入设置焦点:

代码语言:javascript
运行
复制
$('form *:input[type!=hidden]:first').focus();

看到这个工作实例

编辑

我花了相当长的时间来测试它并让它在IE9上工作,但如下所示:

看这个工作溶液

jQuery

代码语言:javascript
运行
复制
setup : function(ed) {
  ed.onLoadContent.add(function(ed, o) {
    var controlLoad = setTimeout(function() {
      if ($('.mceIframeContainer').size()==1) {
        $('form *:input[type!=hidden]:first').focus();
        clearTimeout(controlLoad);
      }
    }, 100);
  });
}

这样做的目的是在找到类.mceIframeContainer之前运行超时,这意味着加载已经完成。在找到它之后,为第一个输入元素设置焦点,超时将被清除。

票数 1
EN

Stack Overflow用户

发布于 2016-07-03 07:27:04

代码语言:javascript
运行
复制
setup: function(ed){
   ed.on('postRender', function (editor, cm) { editor.preventDefault(); }); 
}

如果在函数中执行单个命令,它将忽略preventDefault,并继续聚焦和滚动!:D

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10944450

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档