提交后重置tinyMCE框

时间:2012-03-13 16:22:41

标签: model-view-controller tinymce

我有跟随MVC视图

@model Site.SupportItems.SiteAditionalInformation
@using Site.Helpers.Extenders;
@{
    Response.CacheControl = "no-cache";
}
<div>
    @using (Html.BeginForm("SaveSiteAdditionalInformation", "Support", FormMethod.Post, new { @Id = "frmSiteInformation" }))
 {
        @Html.ValidationSummary(true)
        <fieldset>
            <legend>Site Aditional Information</legend>
            <div class="site-PO-footer-outline-left-comment">
                <div class="site-item-outline">
                    <div class="site-label-left ui-corner-all">
                        @Html.LabelFor(model => model.Office)
                    </div>
                    <div class="site-detail">
                        @Html.DropDownListFor(x => x.Office, Model.Offices.ToSelectList("ValueSelected", "DisplayValueSelected", Model.Office))
                        @Html.ValidationMessageFor(model => model.Office)
                    </div>
                </div>
                <div class="site-item-outline">
                    <div class="site-label-left ui-corner-all">
                        @Html.LabelFor(model => model.AdditionalInformation)
                    </div>
                    <div class="site-detail">
                        @Html.TextAreaFor(model => model.AdditionalInformation, new { @Class = "ui-site-rtb" })
                        @Html.ValidationMessageFor(model => model.AdditionalInformation)
                    </div>
                </div>
            </div>
            <p>
                <input type="submit" value="Save" id="btnSubmit" />
            </p>
        </fieldset>
 }
    <script type="text/javascript">
        $(function ()
        {
            var thisTab = $(Globals.ActiveTabId());
            var previousSelectedOffice;
            $('#Office', thisTab).click(function ()
            {
                previousSelectedOffice = $('#Office', thisTab).val();

            }).change(function (e)
            {
                var setNewContent = function ()
                {
                    $('#loading-Panel').Loading('show');
                    $.ajax('@Url.Action("GetSiteSpecificText")', {
                        data: { Office: $('#Office', thisTab).val(),
                            rnd: Math.random() * 10000
                        },
                        cached: false,
                        success: function (response)
                        {
                            if (response != null)
                            {
                                $('#AdditionalInformation', thisTab).html(response);
                            }
                            else
                                $('#AdditionalInformation', thisTab).html('');

                            $('#loading-Panel').Loading('hide');
                        }
                    });
                };
                if (tinyMCE.activeEditor.isDirty())
                {
                    $('<div/>').text('The Text has changed for the Additional Information. Would you like to save?').dialog({
                        title: 'Text has Changed',
                        buttons: {
                            'Ok': function ()
                            {
                                $('#loading-Panel').Loading('show');
                                var beforeSave = $('#Office', thisTab).val();
                                $('#Office', thisTab).val(previousSelectedOffice);
                                $('#frmSiteInformation', thisTab).trigger('submit');
                                $('#Office', thisTab).val(beforeSave);
                                setNewContent();
                                $(this).dialog('close');
                            },
                            'Cancel': function ()
                            {
                                $(this).dialog('close');
                                $('#Office', thisTab).val(previousSelectedOffice);
                            }
                        }
                    });
                }
                else
                {
                    setNewContent();
                }
            });
            $('#frmSiteInformation', thisTab).submit(function ()
            {
                tinyMCE.triggerSave();
                var data = $('#frmSiteInformation', thisTab).serializeObject();
                $('#loading-Panel').Loading('show');
                $.ajax($(this).attr('action'), {
                    type: 'POST',
                    dataType: 'json',
                    contentType: 'application/json; charset=utf-8',
                    data: JSON.stringify(data),
                    success: function (data)
                    {
                        if (data.SaveResult)
                            $('<div/>').text('Save Successful for' + $('#Office option:selected', thisTab).text())
                        .dialog({
                            title: 'Save Successful',
                            buttons: {
                                'Ok': function ()
                                {
                                    $(this).dialog('close');

                                }
                            }
                        });
                        $('#loading-Panel').Loading('hide');
                    }
                });
                return false;
            });
        });
    </script>
</div>

虽然如果我更改下拉列表,大部分内容正在按照我的预期进行操作,但我希望将RTB清除为空(或者如果数据库中存在响应值,则为响应值)

虽然这有效但如果我再次更改下拉列表,tinyMCE.activeEditor.isDirty()总是会在我认为应该是假的时候回来。

我试过tinymce.execCommand('mceToggleEditor',false,'AdditionalInformation'); 但这只会重新加载第一个RTB

以及tinymce.execCommand('mceRemoveEditor',false,'AdditionalInformation'); 这会导致错误。

如果有人能指出我正确的方向,我会非常感激。

感谢。

编辑我已经解决了使用mceRemoveEditor命令的问题 setNewContent的函数调用如下

var setNewContent = function ()
                {
                    $('#loading-Panel').Loading('show');
                    $.ajax('@Url.Action("GetSiteSpecificText")', {
                        data: { Office: $('#Office', thisTab).val(),
                            rnd: Math.random() * 10000
                        },
                        cached: false,
                        success: function (response)
                        {
                            tinymce.execCommand('mceRemoveEditor', false, 'AdditionalInformation');
                            if (response != null)
                            {
                                $('#AdditionalInformation', thisTab).html(response);
                            }
                            else
                                $('#AdditionalInformation', thisTab).html('');

                            tinymce.execCommand('mceAddControl', false, 'AdditionalInformation');
                            $('#loading-Panel').Loading('hide');
                        }
                    });
                };

感谢您的帮助。

0 个答案:

没有答案