2012-03-04 143 views
0

我有这个提交我的表单,如果它被更改的jQuery代码ajax代码。我唯一的问题是,我也有一个国家jquery选择在我的形式,每次我点击自动填写建议表单与旧/最后一个值得到的提交。 例如:我搜索“奥地利”并点击它,并提交一个空值。然后我将它更改为“波兰”,并提交奥地利的“at”。 我的想法是推迟ajax调用:$ .ajax,但我无法找到如何。jquery 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> 
+0

你可以发表你的形式呢? – 2012-03-04 17:51:24

回答

0

不知道是否会工作,很难说没有看到更多的代码,但在这里是如何延缓$就!

$('#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); 
     } 
    }); 
} 
+0

非常感谢,这是诀窍! – CodingYourLife 2012-03-04 17:58:33

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

好的延迟适用于该代码,但现在我有: 注意:未定义的索引:国家 国家textfield现在保持NULL NULL 只是再次检查它,整个表单不提交,只是这个通知被添加... – CodingYourLife 2012-03-04 17:54:22

+0

你需要绑定回调,以便'this'指向表单。设置'var $ self = $(this);'在第2行,然后将数据更改为$ self.serialize() – rjz 2012-03-04 17:57:14

+0

Thanks @rjz!相应地做出更改。 – 2012-03-04 18:02:27

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