onkeyup 在针对 tinymce 的 jQuery Validate 中不起作用

Posted

技术标签:

【中文标题】onkeyup 在针对 tinymce 的 jQuery Validate 中不起作用【英文标题】:onkeyup is not working in jQuery Validate for tinymce 【发布时间】:2020-09-17 10:53:39 【问题描述】:

为了验证表单,我使用插件 JQuery Validation (jquery.validate.js) 和附加方法。此表单包含许多输入,其中检查了要填写的字段。我对文件使用 onkeyup 规则。一切正常,但不适用于tinymce 的onkeyup 规则。需要注册什么才能使用?

jQuery(function ($) 
        var validator = $("#adminForm").submit(function() 
            // update underlying textarea before submit validation
            tinyMCE.triggerSave();
        ).validate(
    onkeyup: function(element) 
        this.element(element);  // <- "eager validation"
    ,
    onfocusout: function(element) 
        this.element(element);  // <- "eager validation"
    ,
            ignore: "",
            rules: 
                title: 
                    required: true,
                    minlength: 10,
                    maxlength: 50
                ,
                donate: 
                    required: true,
                    digits: true,
                    min: 1,
                    max: 60000
                ,
                text: 
                    required: true,
                    minlength: 250
                ,
                checkbox: 
                    required: true
                
            ,
            messages: 
                title: 
                    required: "enter the title",
                    minlength: "no less than 10 symbols",
                    maxlength: "no more than 50 symbols"
                ,
                donate: 
                    required: "enter the number",
                    digits: "Not a number",
                    min: "no less than 1",
                    max: "no more than 60000"
                ,
                text: 
                    required: "here is your text",
                    minlength: "no less than 250 symbols"
                ,
                checkbox: 
                    required: "do you public spam?"
                
            ,
            errorPlacement: function(label, element) 
                // position error label after generated textarea
                if (element.is("textarea")) 
                    label.insertAfter(element.next());
                 else 
                    label.insertAfter(element)
                
            
        );
        validator.focusInvalid = function() 
            // put focus on tinymce on submit validation
            if (this.settings.focusInvalid) 
                try 
                    var toFocus = $(this.findLastActive() || this.errorList.length && this.errorList[0].element || []);
                    if (toFocus.is("textarea")) 
                        tinyMCE.get(toFocus.attr("id")).focus();
                     else 
                        toFocus.filter(":visible").focus();
                    
                 catch (e) 
                    // ignore IE throwing errors when focusing hidden elements
                
            
        
    );

【问题讨论】:

【参考方案1】:

当您加载 TinyMCE 时,编辑器区域实际上是一个 iframe,而不是主页的一部分,因此像 keyup 这样的事件不会发生在主页中,而是在 iframe 中。您当然也可以将事件处理添加到 iframe,但这就是为什么您没有看到基于在编辑器中输入而触发的这些事件。

【讨论】:

那么,您会推荐什么解决方案?究竟需要做什么?

以上是关于onkeyup 在针对 tinymce 的 jQuery Validate 中不起作用的主要内容,如果未能解决你的问题,请参考以下文章

针对表单字段占位符属性中的特定字母

onKeyUp 不能在 onChange 的 React 中工作

为啥 onkeyup 事件不会在 Javascript 游戏中触发

BOM

在vue中使用tinymce富文本编辑器,解决tinymce在dialog对话框中层级太低的问题

为啥tinymce没有出现在动态添加的文本区域