2012-03-04 139 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); 
      } 
     }); 
};