Bri*_*iec 10 javascript jquery tinymce
我的表单上有很多输入字段,其中一个是使用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"
}
});
Run Code Online (Sandbox Code Playgroud)
更新:
经过一些测试后,看起来这个问题只出现在IE9中.Chrome,FireFox,Opera和Safari在页面加载时不会将焦点设置到编辑器.IE7和IE8模式下的IE9也没有将焦点设置在页面加载上,但即使您尝试将焦点设置为另一个输入,IE9本身也会将焦点设置到编辑器.
这一切都会在您使用textarea中的值加载页面后发生更改.当你这样做时,IE9的工作方式与其他浏览器类似.现在我在textarea中加载一个单一空格的页面,这使得IE9正常工作.
将有助于您了解剩余的输入和表单结构,以了解更好的方法,但类似的内容应该有所帮助:
jquery
function myCustomOnInit() {
$('form *:input[type!=hidden]:first').focus();
}
tinyMCE.init({
...
oninit : myCustomOnInit
});
Run Code Online (Sandbox Code Playgroud)
来自文档:
此选项使您能够指定在所有编辑器实例完成初始化后要执行的函数。这很像 HTML 页面的 onload 事件。
注意:您还可以将函数名称作为字符串传递。但在这种情况下,该函数必须在页面的全局范围内声明。
这里的技巧是为第一个可见输入设置焦点:
$('form *:input[type!=hidden]:first').focus();
Run Code Online (Sandbox Code Playgroud)
请参阅这个工作示例!
我花了相当多的时间来测试它并使其适用于 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);
});
}
Run Code Online (Sandbox Code Playgroud)
这样做的目的是运行超时,直到.mceIframeContainer
找到类,这意味着加载完成。找到它后,为第一个输入元素设置焦点并清除超时。
归档时间: |
|
查看次数: |
5293 次 |
最近记录: |