11

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

这就是我的代码现在的样子

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 不会在页面加载时将焦点设置到编辑器。IE7 和 IE8 模式下的 IE9 也不会在页面加载时设置焦点,但即使您尝试将焦点设置到另一个输入,IE9 本身也会将焦点设置到编辑器。

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

4

2 回答 2

1

将有助于让您的剩余输入和表单结构了解更好的方法,但沿着这条线的东西应该会有所帮助:

查询

function myCustomOnInit() {
    $('form *:input[type!=hidden]:first').focus();
}

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

文档

此选项使您能够指定在所有编辑器实例完成初始化时要执行的函数。这很像 HTML 页面的 onload 事件。

注意:您也可以将函数名称作为字符串传递。但在这种情况下,函数必须在页面的全局范围内声明。

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

$('form *:input[type!=hidden]:first').focus();

请参阅工作示例


已编辑

我花了一些时间来测试它并让它在 IE9 上工作,但这里是:

请参阅此工作解决方案

jQuery

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找到类之前运行超时,这意味着加载完成。找到后,为第一个输入元素设置焦点并清除超时。

于 2012-06-08T17:41:10.593 回答
-1
setup: function(ed){
   ed.on('postRender', function (editor, cm) { editor.preventDefault(); }); 
}

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

于 2016-07-03T07:27:04.250 回答