5

我有一个使用不显眼验证的表单。最近我更改了文本区域以使用小 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');
            });
        });
4

4 回答 4

3

您在选择器中指定了“#form”的 ID。尝试从选择器中删除 #。

例如,

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

此外,如果我正确阅读代码,则 tinyMCE 是一个动态元素。您可能希望将 click 事件与 on 函数绑定。

例如,

$("body").on("click","#yourFormID", function(e){
    your click stuff here
}
于 2012-07-22T15:57:26.787 回答
0

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

你能检查一下 tiny_mce.js 是否真的被下载了吗?您可能还想查看此博客。它来自对 Tiny MCE 也有问题的人。

于 2012-07-25T17:50:02.400 回答
0

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

$.validator.setDefaults({
ignore: ''

});

于 2012-07-28T08:28:28.867 回答
0

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

于 2012-07-30T09:18:36.220 回答