jquery ajax延迟表单提交

时间:2012-03-04 17:43:20

标签: jquery ajax forms submit delay

我有这个jquery ajax代码,如果它被更改,则提交我的表单。我唯一的问题是我的表单中还有一个国家/地区jquery选择,每次我点击自动完成建议时,表单都会提交旧的/最后一个值。 示例:我搜索“奥地利”并单击它,并提交一个空值。然后我将其更改为“波兰”,并将“at”更改为奥地利。 我的想法是延迟ajax调用:$ .ajax但是我找不到如何。

<script type="text/javascript">
$(document).ready(
function submitFormAjax()
{
    $('#myForm').change(function() {
        $.ajax({
            type:"POST",
            url:"ajax.php",
            data:$(this).serialize(),
            success:function(data)
            {
                $("#ajaxList").html(data);

            }
        })

      return false;
    });
});
</script>

3 个答案:

答案 0 :(得分:1)

setTimeout将在这里完成工作:

$('#myForm').change(function() {
    var self = $(this);
    setTimeout(function () {
        $.ajax({
            type:"POST",
            url:"ajax.php",
            data:self.serialize(),
            success:function(data)
            {
                $("#ajaxList").html(data);

            }
        })
    }, 1000);
    return false;
});

答案 1 :(得分:0)

不确定它是否会起作用,很难在没有看到更多代码的情况下判断,但这里是如何延迟$ .ajax!

$('#myForm').on('change', function() {
   setTimeout(submitFormAjax, 200);
   return false;
});
function submitFormAjax() {
    $.ajax({
        type:"POST",
        url:"ajax.php",
        data:$('#myForm').serialize(),
        success:function(data) {
            $("#ajaxList").html(data);
        }
    });
}

答案 2 :(得分:0)

$('#myForm').change(function() {
 var val = $(this).serialize();
 setTimeout(delayAjax(val),1000);
});

定义延迟ajax函数

function delayAjax(formVal){

 $.ajax({
            type:"POST",
            url:"ajax.php",
            data:formVal,
            success:function(data)
            {
                $("#ajaxList").html(data);
            }
        });
};