防止异步表单提交后的更改?

时间:2012-02-01 07:30:09

标签: jquery jqueryform

所以我有一个名为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 个答案:

答案 0 :(得分:1)

如果用户更改HTML元素的值,variables将不会受到影响。

如果您希望用户知道他将要做的更改将不会影响,因为已经发送了请求。只是禁用元素。

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);
        }