Настройка пользовательского ответа с помощью JEditable - PullRequest
4 голосов
/ 08 ноября 2011

Я использую JEditable плагин jquery для обновления некоторых данных на моей веб-странице.После того, как данные сохранены через плагин JEditable на сервере, я хочу заменить старое содержимое в контейнере div новым, которое фактически отличается от вставленных данных (приложение обрабатывает данные перед сохранением и добавляет дополнительную информацию с помощьюЭто).

Я попробовал приведенный ниже код, чтобы сделать то же самое, он работает впервые, но как только данные заменяются в контейнере div, редактируемая функциональность теряется.

$(".editableComments").editable( function(value, settings) {
            selectedId = $(this).attr("id");
            $.ajax({
                url:'ajaxApproveRequests',
                type:'post',
                data:{
                        requestType: "Trans",
                        idList : $(this).attr("id"),
                        comment:  value
                    },
                success: function(data) {
                    if (data != "Error")
                        {
                            $("#"+selectedId).html(data);
                        }
                },
                error: function(req) {
                    alert("Error in request. Please try again later.");
                }
            });
        },
        {
            indicator : "Saving...",
            type   : 'textarea',
            submit : '<input type="button" id="okBtn" value="Ok" onMouseOver="rollOnAutoButton(this)" onMouseOut="rollOffAutoButton(this)" class="autobtn" >',
            cancel : '<input type="button" id="cancelBtn"  value="Cancel" onMouseOver="rollOnAutoButton(this)" onMouseOut="rollOffAutoButton(this)" class="autobtn" >',
            cssclass : "editableArea",
            rows: 5,
            cols: 25,
            onblur    : "ignore"
        }); 

HTML-код:

<div class="editableComments">some data</div>

Пожалуйста, подскажите, где я делаю wron?Заранее спасибо.

1 Ответ

11 голосов
/ 08 ноября 2011

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

Что я делаю, так это то, что за это время я возвращаю некоторое временное значение, пока я выполняю свою функцию ajax:

   $(".editableComments").editable( function(value, settings) {
        selectedId = $(this).attr("id");
        $.ajax({
            url:'ajaxApproveRequests',
            type:'post',
            data:{
                    requestType: "Trans",
                    idList : $(this).attr("id"),
                    comment:  value
                },
            success: function(data) {
                if (data != "Error")
                    {
                        $("#"+selectedId).html(data);
                    }
            },
            error: function(req) {
                alert("Error in request. Please try again later.");
            }
        });
        return value; //need the return
    }, ...
...