可以't在asp-mvc中验证TinyMCE

Can't validate TinyMCE in asp mvc

本文关键字:asp-mvc 验证 TinyMCE 可以      更新时间:2024-01-09

我有一个使用不引人注目的验证的表单。最近我把文本区域改为使用微小的mce,现在验证不起作用
我试着从这里使用解决方案,但什么也没发生

$('#form input[type=submit]').click(function () {

从不执行。我有什么:

@using (Html.BeginForm("Create", "UserAd", FormMethod.Post))
{
...
@Html.TextAreaFor(x => x.Description, new { id = "description" })        
...
<input type="submit" value="Create"/>
...

这是JS代码:

$(document).ready(function () {
        tinyMCE.init({
            mode: "textareas",
            theme: "advanced",
            skin: "o2k7",
            height: "250",
            plugins: "autolink,lists,spellchecker,pagebreak,style,layer,table,save,advhr,advimage,advlink,emotions,iespell,inlinepopups,insertdatetime,preview,media,searchreplace,print,contextmenu,paste,directionality,fullscreen,noneditable,visualchars,nonbreaking,xhtmlxtras,template",

            theme_advanced_buttons1: "bold,italic,underline,strikethrough,|,justifyleft,justifycenter,justifyright,justifyfull,|,bullist,numlist",
            theme_advanced_buttons2: "",
            theme_advanced_buttons3: "",
            theme_advanced_buttons4: "",
            theme_advanced_toolbar_location: "top",
            theme_advanced_toolbar_align: "left",
            theme_advanced_resizing: false
        });
        function toggleEditor(id) {
            if (!tinyMCE.get(id)) {
                tinyMCE.execCommand('mceAddControl', false, id);
            }
            else {
                tinyMCE.execCommand('mceRemoveControl', false, id);
            }
        }

        // new
        $(function () {
            var tinymce = $('#Description');
            tinymce.tinymce({
                setup: function (e) {
                    e.onInit.add(function () {
                        tinymce.css({
                            position: 'absolute',
                            height: 0,
                            width: 0,
                            top: -100
                        }).show();
                    });
                }
            });
            $('#form input[type=submit]').click(function () {
                alert('ss');
                tinyMCE.triggerSave();
            });
        });
        // makes form field highlighting work with bootstrap's css
        $.validator.setDefaults({
            highlight: function (element, errorClass, validClass) {
                $(element).closest('.control-group').addClass('error');
            },
            unhighlight: function (element, errorClass, validClass) {
                $(element).closest('.control-group').removeClass('error');
            }
        });
        $(function () {
            // makes form field highlighting work with bootstrap's css on post backs
            $('.input-validation-error').each(function (i, element) {
                $(element).closest('.control-group').not('.error').addClass('error');
            });
        });

您正在选择器中指定一个ID"#form"。尝试从选择器中删除#。

E.G,

$('form input[type=submit]').click(function () {
      alert('ss');
      tinyMCE.triggerSave();
});

此外,如果我读对了代码,那么tinyMCE就是一个动态元素。您可能希望将单击事件与on函数绑定。

E.G,

$("body").on("click","#yourFormID", function(e){
    your click stuff here
}

您得到的错误正是它所说的。在jQuery之前,您需要加载TinyMCE(而不是插件,真正的交易)。这可能就是问题所在。

你能检查一下tiny_mce.js是否真的下载了吗?你可能还想看看这个博客。这是一个谁也有问题的微小MCE。

由于在应用tinyMce插件后TextArea被隐藏,并且由于默认的隐藏文件没有经过验证,因此需要更改此默认值。您是否已经尝试添加:

$.validator.setDefaults({
ignore: ''

});

对于这个问题,已经有几个stackoverflow问题可以解决这个问题。看看这里

  • Jquery验证表单,包含TinyMCE字段,该字段通过空值未给出错误
  • 验证多个TinyMCE编辑器