Предотвратить изменения после отправки асинхронной формы? - PullRequest
0 голосов
/ 01 февраля 2012

Итак, у меня есть функция submitEdit ():

function submitEdit() {
    //var ffield = document.getElementById("form_eline");
    //ffield.submit();
    jQuery('#edit_line').css('visibility', 'hidden');

    var fieldName = jQuery('#form_eline input[name=efield]').val();
    var pageId = jQuery('#form_eline input[name=eid]').val();
    var fieldText = jQuery('#ve'+fieldName+'_'+pageId);
    var editBtn = fieldText.prev();
    var loading = document.createElement("img");
    loading.src = 'http://www.lookall.tv/html/res/img/loading.gif';
    loading.id = "loading";
    loading.width = 16;
    loading.height = 16;

    jQuery('#form_eline').ajaxSubmit({
        beforeSubmit: function() {
            editBtn.hide();
            fieldText.prepend(loading);
        },
        error: function(data) {
            jQuery('#edit_line').css('visibility', 'visible');
        },
        success: function(response) {
            fieldText.text(jQuery('#form_eline :text').fieldValue()[0]);
            editBtn.show();
            jQuery('img#loading').remove();

            return true;
        }
    });
}

К сожалению, это не моя работа, и я строю на уже существующем веб-сайте. Так что проблема в том, что сервер медленно реагирует. Поэтому за эти несколько секунд серверу требуется отправить ответ, чтобы кто-то мог отредактировать другое поле, перезаписывая текущие значения. Есть ли способ создать переменные, чтобы они не перезаписывались?

1 Ответ

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

На variables это не повлияет, если пользователь изменит значения элементов HTML.

Если вы хотите, чтобы пользователь знал, какие изменения он сделает, это не повлияет, поскольку запрос уже отправлен. просто отключите элементы.

beforeSubmit: function() {
            editBtn.hide();
            fieldText.prepend(loading);
            $('#form_eline input, select, textarea').prop('disabled', true);
        },
complete: function (){
            editBtn.show();
            $('#form_eline input, select, textarea').prop('disabled', false);
        }
...