2011-03-29 72 views
2

我遇到了下面的代碼問題,我不確定原因。

方案摘要:
基本上我已經與行內編輯幾個輸入字段,當每一個被填滿,在模糊或擠壓進入一個頁面,一個JavaScript函數被調用它具有以下功能:

  • 顯示「加載」,而不是輸入字段
  • 沒有一個AJAX請求的PHP文件
  • 上完成,然後替換「裝」與用戶的價值

問題
上述工作,如果用戶在一個時間編輯1個輸入字段中,但是當用戶編輯第二場,而第一個是仍然「加載」,的JavaScript得到「丟失完全正常',當第一個AJAX請求完成時,「加載」仍然存在,但第二個AJAX請求正確替換。

下面是javascript代碼,我相信JS混淆與「nearestTd」有關,就好像jquery是'忘記'舊的nearestTd(來自第一次調用),只'記得'新的那個。 ..需要建議嗎?

function action_addSystemCountryLanguageField (event) { 
value = $(event.target).val(); 
nearestTd = $(event.target).closest('td'); 
var loading=nearestTd.html("<div align='center'><img src='images/loading-small.gif' width='15' height='15' /></div>"); 

$.ajax({ 
    url: 'actions/pause.php', 
    type: 'POST', 
    dataType: 'json', 
    success: function(response, textStatus, XMLHttpRequest) { 
     nearestTd.html("<span class='editSystemCountryLanguage'>ok</span>"); 
    }, 
    error: function(XMLHttpRequest, textStatus, errorThrown) { 
     if (typeof console != 'undefined') 
      console.dir(XMLHttpRequest); 
     return false; 
    } 
}); 
} 

PHP代碼,只是一個簡單的暫停功能,所以我可以有一個AJX延遲&測試這個錯誤:

$(".addSystemCountryLanguage").live('blur', action_addSystemCountryLanguageField); 
$(".addSystemCountryLanguage").keypress(function(e) { 
    if(e.keyCode == 13) { 
    action_addSystemCountryLanguageField(e); 
    } 
}); 

<?php 
    sleep(1.5); 
?> 

頁& jquery的 '聽衆' 的代碼

HTML:

<input class='addSystemCountryLanguage' style='width:80px; border: 0;' value='' /> 

回答

6

您意外地使用全局變量。

function action_addSystemCountryLanguageField (event) { 
    var value = $(event.target).val(); 
    var nearestTd = $(event.target).closest('td'); 
    var loading=nearestTd.html("<div align='center'><img src='images/loading-small.gif' width='15' height='15' /></div>"); 

    . 
    . 
    . 
} 

http://www.jslint.com/有時候也會遇到類似的問題。

+0

好的!萬分感謝 !我知道它一定是這種類型的東西,但我對jquery來說是新的...很棒的鏈接btw! 我該如何修正上面的代碼,所以我沒有使用全局變量?我試圖檢查一些參考,但沒有得到一個清晰的想法呢...... 謝謝! – 2011-03-29 11:59:00

+0

對不起,沒有說清楚:你在名爲「value」和「nearestTd」的變量前面缺少「var」(變量聲明)。以我的答案中的代碼爲例。 – 2011-03-29 13:34:14

+0

哦!對不起,我沒有注意到,儘管我直接比較了代碼。愚蠢的我大聲笑!非常感謝:) – 2011-03-29 14:06:53