2009-10-31 150 views
0

我一直在使用基於數據網格project.Everything我的PHP + AJAX的最後一位工程,我設計,除了一兩件事:我不能阻止用戶打開多個選擇框...如何防止在屏幕上顯示多個html選擇框?

轉到my research page和使用的用戶名「陳希懋」和密碼「accedo」登錄(不含雙引號)。

請注意,也許在第一次加載頁面時,此數據網格中使用的圖像可能不會顯示(奇怪的是,我試圖修復此問題,也許是瀏覽器不兼容)。

如果雙擊「CONSULTANT」列中的一個單元格,將顯示一個html選擇框,您可以選擇一個顧問將其分配給此任務或取消分配此任務的顧問。這沒有問題。

問題是:當用戶離開這個選擇框打開時,他/她仍然可以打開另一個選擇框...我的jQuery代碼無法阻止人們打開多個選擇框。

你可以通過ctrl-U來查看這個頁面上的源代碼,並檢查「gridview-helper.js」裏面的內容。

我想讓用戶只打開一個選擇框。當他/她離開小區時,選擇框應該被關閉,在不改變裏面的HTML ...

不解,搞砸了今天下午...

感謝任何suggestons提前!

回答

1

JavaScript是單線程的,因此您可以在打開新的選擇框之前添加互斥變量並檢查其值。

截至gridview-helper.js頂部:

var is_choice_visible = false; 

在你雙擊處理程序:

$(this).dblclick(function() 
{ 
    if (is_choice_visible) 
     return; 
    is_choice_visible = true; 
... 

爲了您的選擇框,添加一個onblur處理這臺is_choice_visiblefalse,並刪除自身。

無關的提示:在舊版本的Internet Explorer中,在循環中增大字符串速度較慢。這是更有效地追加到一個數組中,並加入陣列,例如:

var html = ["<select>..."]; 
for (var i in consultantnames) 
{ 
    html.push("<option>...</option>"); 
} 
html.push("</select>"); 
return html.join(""); 
+0

酷!謝謝你的提示! 我會嘗試按照你的方式去做! – 2009-10-31 06:48:37

+0

var htmlStr =「