Функция Javascript не сработала? - PullRequest
0 голосов
/ 12 февраля 2012

В моем приложении MVC 3 я использую CKeditor для редактирования форматированного текста.Прямо сейчас мне нужно иметь возможность сохранять текст в БД с тегами HTML.

Проблема в том, что при нажатии кнопки «Сохранить» ничего не происходит.

Оповещение возвращает Undefined.

Просмотр:

@using (Html.BeginForm()) {
    @Html.ValidationSummary(true)
    <fieldset>
        @Html.DropDownListFor(model=>model.Id, Model.Texts)  
        <div class="editor-field">
            @Html.TextAreaFor((model => model.Text), new { @Id = "editor1" })
            @Html.ValidationMessageFor(model => model.Text)
        </div> 
        <script type="text/javascript">
            CKEDITOR.replace('editor1');
            </script>

        <script type="text/javascript">
            var editor_data1 = $('editor1').val(); 
            var editor_data = editor_data1.getHtml();
            var url = '@Url.Action("EditText", "Admin")';
            var data = { commentText: editor_data };

            function Save() {
                alert(editor_data);
                $.post(url, data, function(result) {  

});

            };
            $('#Id').change(function () {
                var selectedText = $(this).val();
                if (selectedText != null && selectedText != '') {
                    $.getJSON('@Url.Action("Text","Admin")', { Id: selectedText }, function (text) {

//                        var textSelect = $('#Text');
//                        textSelect.empty();
//                        $("#Text")[0].value = text;
                        CKEDITOR.instances['editor1'].setData(text);
                        //                $.each(text, function (index, employee) {
                        //                    textSelect.append($('<option/>', {
                        //                        value: employee.Value,
                        //                        text: employee.Text
                        ////                    }));
                        //                });
                    });

                }
            });
</script>
    </fieldset>
     <p>
            <input type="button" value="Save"  onclick="Save()"/>
        </p>
} 

Ответы [ 2 ]

1 голос
/ 12 февраля 2012

Попробуйте заменить:

var editor_data1 = $('editor1').val();

на:

var editor_data1 = $('#editor1').val();

в jQuery, если вы хотите выполнить id selector , вам следует добавить префикс #.

Также используемый вами метод .val() возвращает строку.Я не знаком с CKEditor, но я очень сильно сомневаюсь, что в строковом типе есть getHtml.

Возможно, вы имели в виду:

var editor_data = CKEDITOR.instances['editor1'].getData();

Также вы, похоже, подписываетесь на событие изменения некоторого элемента DOM с помощью id="Id":

$('#Id').change(...);

Я могуЯ не вижу такого элемента в вашей DOM.Вы уверены, что не имели в виду:

$('#editor1').change(...);

или какой-то другой элемент?Может быть, выпадающий список?

У вас, похоже, есть проблемы с синтаксисом jQuery.Я бы порекомендовал вам пройти некоторые уроки.

0 голосов
/ 12 февраля 2012

Строки над функцией Save() будут выполняться при разборе документа.В этот момент ваш CKEditor может даже еще не существовать.Чтобы это исправить, переместитесь внутрь Save(), вот так:

        function Save() {
        var editor_data1 = $('editor1').val(); 
        var editor_data = editor_data1.getHtml();
        var url = '@Url.Action("EditText", "Admin")';
        var data = { commentText: editor_data };
        alert(editor_data);
        $.post(url, data, function(result) {  });
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...