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='' />
好的!萬分感謝 !我知道它一定是這種類型的東西,但我對jquery來說是新的...很棒的鏈接btw! 我該如何修正上面的代碼,所以我沒有使用全局變量?我試圖檢查一些參考,但沒有得到一個清晰的想法呢...... 謝謝! – 2011-03-29 11:59:00
對不起,沒有說清楚:你在名爲「value」和「nearestTd」的變量前面缺少「var」(變量聲明)。以我的答案中的代碼爲例。 – 2011-03-29 13:34:14
哦!對不起,我沒有注意到,儘管我直接比較了代碼。愚蠢的我大聲笑!非常感謝:) – 2011-03-29 14:06:53