Как получить содержимое формы nicEdit при отправке через ajax? - PullRequest
9 голосов
/ 06 марта 2011

Итак, я хочу отправить форму, используя функцию AJAX в jQuery. И маршрут, который я выбрал, состоял в том, чтобы использовать $ ('# form'). Serialize (); а затем передать это как запрос GET. Все работает отлично, пока я не добавлю редактор NicEdit, который собираюсь использовать на сайте.

Я исследовал проблему, и ситуация такова, что как только NicEdit захватывает, например, текстовую область, он скрывает текстовую область для пользователя и вместо этого получает ее запись в. Эти данные будут затем возвращены в текстовую область, вызванную нажатием обычной кнопки отправки.

Теперь проблема в том, что у меня нет обычной кнопки отправки и, следовательно, я не запускаю событие, которое возвращает данные обратно в текстовую область. И я старался изо всех сил, чтобы решить проблему Google решение, но все, что я нашел, ничего не стоит.

Учитывая неправильную базовую настройку моей ситуации: http://jsfiddle.net/MMzhS/1/ - Как бы вы получили данные из формы NicEdit в текстовую область перед alert (); называется?

Ответы [ 7 ]

23 голосов
/ 15 декабря 2011
var nicE = new nicEditors.findEditor('assignment');
question = nicE.getContent();

'assignment' - это ваш текстовый идентификатор.

содержимое текстовой области сохранено в переменной вопроса, надеюсь, это поможет

12 голосов
/ 06 марта 2011

Следующее, что предоставлено BinaryKitten из #jQuery, делает то же самое, но, на мой взгляд, немного чище: http://jsfiddle.net/MMzhS/5/

3 голосов
/ 30 октября 2015

var nicInstance = nicEditors.findEditor ('options1');var messageContent = nicInstance.getContent ();

, где options1 - это идентификатор текстовой области

3 голосов
/ 06 сентября 2012
  1. Создание экземпляра nicEdit

    MyApp.editor = new nicEditor (). PanelInstance ('texarea_id');

  2. Разрешить пользователювводите контент в свое душевное содержание!(Pun непреднамеренно)

  3. Получить содержимое:

    var content = MyApp.editor.instanceById ('textarea_id'). GetContent ();

  4. Публикуйте содержимое как обычно, используя content.

0 голосов
/ 16 октября 2014

для людей, которые задаются вопросом, как добавить пользовательский комбинированный список в nicEdit, вот мой пост в блоге, чтобы отобразить пользовательский выпадающий список с динамическими значениями

Ссылка

Черезредактируя js-файл NiceEdit, мы можем добавить пользовательское поле со списком в NicEdit

. Следующим способом мы можем добавить выпадающий список или выпадающий список в NicEdit.Вы можете получить раскрывающееся значение из базы данных посредством вызова ajax и показать его в NicEdit. Прежде всего, загрузите и внедрите NicEdit на странице aspx. Загрузите файл NiceEdit js, и вы можете включить его с помощью следующего кода (http://nicedit.com/)

 <div style="height: 700px; width: 70%; overflow: scroll">                <div id="sample"><script type="text/javascript" src="../scripts/nicEdit.js"></script><script src="../nicExample/nicExample.js"></script>
                    <script type="text/javascript">
                        bkLib.onDomLoaded(function () {
                            //  nicEditors.allTextAreas()
                            new nicEditor({ fullPanel: true }).panelInstance('area2');});</script>
                    <h4>NicEdit Textarea</h4><textarea name="area2" id="area2" style="width: 70%; height: 700px"> </textarea>
                    </div></div>

Теперь добавьте функцию AJAX getddlData () в файл niceEdit.js в конец файла

// AJAX call
function getddlData() {
    var ajaxResponse;
    $.ajax({
        type: "POST",
        url: 'NicEdit.aspx/GetBookMarkData', // AJAX call to fecth dropdown data
        contentType: "application/json; charset=utf-8",
        dataType: "json",
        async: false,
        cache: false,
        // Text file name
        success: function (response) {
            //    //alert(data.d);    // or do some other data processing
            //   //return data.d;
            ajaxResponse = response;
        }
    });
    return ajaxResponse.d;
}

// Добавьте webMethod в codebehind (файл .cs) в раскрывающееся значение fetech в nicedit

   [WebMethod]
        public static string GetBookMarkData()
        {
///Also you can get DB's data here
            ///  (2 responses dropdown values being filled :  'drop down Value', drop down Text)
            /// Need DB data in , seprated list  Formate:  @@Test@@,TestOne, TestOne,  @@Test2@@,Test2,Test2
            string sbookmarkData = "<<Test_Name>>,Test Name,<<Test_Add>>,Test Add,<<Test_Location>>,Test Location,<<Test_City>>,Test City,<<Test_Phone>>,Test Phone";
            return sbookmarkData;
        }

Теперь откройте файл NicEdit js и скопируйте (строка № 1552) или найдите следующую строку:

var nicEditorFontFormatSelect = nicEditorSelect.extend({

Copy complete function and create another one by changing names etc

var nicEditorInsertBookmark = nicEditorSelect.extend({
    /* By Pankaj Sharma : Not Needed Now  */
    sel: {
        '[[Location]]': "Test Name",
        pre: "Test Address",
        h6: "Test City",
        h5: "Test State",
        h4: "Test Zip",
        h3: "Test ABC",
        h2: "Test One",

    },
    init: function () {
        /* Pankaj Sharma */
        this.setDisplay("Insert Bookmark");
        var response = getddlData();
        var responseArr = response.split(",");
        var strings = [];
        //for (itm in this.sel) {         
        //  //  var A = itm.toUpperCase();
        //    //this.add(  A,  this.sel[itm]  )
        //   }

        for (i = 0; i < responseArr.length; i++) {
            strings.push([responseArr[i], responseArr[i + 1]]);
            i = i + 1;
        }
        for (var i in strings) {
            this.add(strings[i][0], strings[i][1]);
        }
        /* END HERE*/
    },
});

Получите строку № 1230 или выполните поиск следующей строки:

var nicSelectOptions ={button: {Добавить следующую функцию fontFormat ниже

'CustomBookmark': {name: __ ('Вставить закладку'), введите: 'nicEditorInsertBookmark', // команда: 'InsertBookmark' // InsertBookmark}

теперь обновленная функция должна выглядеть следующим образом

var nicSelectOptions = {
    buttons: {
        'fontSize': {
            name: __('Select Font Size'),
            type: 'nicEditorFontSizeSelect',
            command: 'fontsize'
        },
        'fontFamily': {
            name: __('Select Font Family'),
            type: 'nicEditorFontFamilySelect',
            command: 'fontname'
        },
        'fontFormat': {
            name: __('Select Font Format'),
            type: 'nicEditorFontFormatSelect',
            command: 'formatBlock'
        },
        'CustomBookmark': {
            name: __('Insert Bookmark'),
            type: 'nicEditorInsertBookmark',  //
            command: 'InsertBookmark'   //InsertBookmark
        }
    }
};

Теперь перейдите к строке 1385 или обновите: function (A) {Измените ее на

 update: function (A) {
        //  alert(this.options.command);
        if (this.options.command == 'InsertBookmark') {+
 var editor = nicEditors.findEditor("area2");
        var range = editor.getRng();
        var editorField = editor.selElm();

            editorField.nodeValue = editorField.nodeValue.substring(0, range.startOffset) + A + editorField.nodeValue.substring(range.endOffset, editorField.nodeValue.length);
}
        else {
            // alert(A);  
            /* END HERE */
            this.ne.nicCommand(this.options.command, A);
        }
        this.close()
    }

В опциях DropDown нажмите Это добавитКапляВнизу значения в текстовом редакторе на позиции курсора.

END, вы должны увидеть результаты

0 голосов
/ 25 марта 2011
document.getElementById("content").value = "<html><head><title></title><head><body>"+nicEditors.findEditor("this will be your id of your textarea").getContent()+"</body></head></html>";
var templateContent = document.getElementById("content").value;
0 голосов
/ 06 марта 2011
var data = $('#peter div').eq(90).text();

- информация о данных. Также, пожалуйста, используйте $.post вместо $.get для отправки формы; будь вежлив с интернетом.

...