2011-01-31 78 views
0

我有一個下拉菜單,基本上通過onchange發送一些數據回服務器。數據以秒爲單位存儲在數據庫和主表中以避免重複。如果我通過鍵盤滾動下拉菜單(例如使用上/下鍵),會發生什麼情況,我的腳本會返回錯誤,因爲數據庫中現在有重複條目。onChange下拉和超時

這裏是HTML的下拉列表中的部分代碼

onchange="GetmySQLData();" 

我的問題是我能不能做一個setTimeout和這將是正確的這種格式使用它:

onchange="setTimeout('GetmySQLData();', 1750);" 

如果您有更好的方法,請隨時告訴我。

感謝

回答

2

以下版本是可以互換的:

  1. setTimeout('myFunction()',1750);
  2. setTimeout(myFunction,1750)
  3. setTimeout(function() { /* some anonymous function */ },1750)

你可能想要的是

<script> 
var tId = ""; // create a global var 
</script> 

,並有
onchange="clearTimeout(tId); tId=setTimeout('GetmySQLData()',1750)"

這隻會執行平變化後用戶不更改超時的持續時間的下拉列表中,但如果在超時時間內用戶的變化時,將觸發新的超時

-1

如果您計劃使用的setTimeout那麼它在以下方式來調用:

的onchange = 「的setTimeout(GetmySQLData(),1750);」提供引用參數的單引號使其被視爲字符串。超時值以毫秒爲單位。

+0

那是完全錯誤的。如果你不使用引號,那麼函數立即執行,然後當超時結束時嘗試執行函數的結果。 – mplungjan 2011-01-31 07:39:34

+0

是的你是對的。我正在考慮將對象傳遞給函數,在這種情況下,它將被視爲一個字符串。 – programmer 2011-01-31 07:47:24