jquery SCEditor:使用Ctrl+Enter提交表单-如何获取示例的父示例?

uttx8gqw  于 12个月前  发布在  jQuery
关注(0)|答案(2)|浏览(97)

我在我的网站上有多个文本区域的表单。每个文本区域都分配了sceditor插件。现在我试图通过提供快捷方式提交表单。
首先,我为每个编辑器示例分配了一个keyup方法:

$('textarea[name="test01"]').sceditor('instance').keyUp(function(e) {
    if (e.ctrlKey && e.keyCode == 13) {
        console.log(this); // case 1
    }
    // ...

字符串
后来我也找到了内置的方法:

$('textarea[name="test01"]').sceditor('instance').addShortcut('ctrl+enter', submitform);
function submitform() {
    console.log(this); // case 2
}


我的目标是在sceditor DIV之前获得兄弟,这是textarea。从那里我可以找到提交按钮。或者我可以向下遍历DOM树,找到textarea / sceditor嵌套的表单。
然而,console.log(this);给出了案例1:节点的HTML,即在Webdeveloper控制台中我可以看到sceditor的HTML。对于案例2,我收到了sceditor对象。
问题是我不能访问父级。而且在sceditor docs中我看不出有什么办法可以做到这一点。
谢谢你的帮忙。

qco9c6ql

qco9c6ql1#

当添加快捷方式处理程序时,您知道处理程序将添加到哪个文本区域,因此您可以执行以下操作:

$('textarea[name="test01"]').sceditor('instance').addShortcut('ctrl+enter', function () {
    submitform($('textarea[name="test01"]').get(0).form);
});

function submitform(form) {
    console.log(form.id);
}

字符串
工作示例:http://jsfiddle.net/5jc6f589/

shstlldc

shstlldc2#

2023回答

这可以通过一个简单的插件结合一些工厂重写来完成。
插件

sceditor.plugins.shortcut = function ()
{
    let editor;

    this.init = function ()
    {
        editor = this;

        this.addShortcut('ctrl+enter', function () {
            editor.opts.original.form.submit();
        });
    };
};

字符串

工厂覆盖

const createFn = sceditor.create;
sceditor.create = (textarea, options) => {
    options.original = textarea;

    createFn(textarea, options);
};

相关问题