如何防止在屏幕上显示多个html选择框?

如何防止在屏幕上显示多个html选择框?

问题描述:

我一直在使用基于数据网格project.Everything我的PHP + AJAX的最后一位工程,我设计,除了一两件事:我不能阻止用户打开多个选择框...如何防止在屏幕上显示多个html选择框?

转到my research page和使用的用户名“陈希懋”和密码“accedo”登录(不含双引号)。

请注意,也许在第一次加载页面时,此数据网格中使用的图像可能不会显示(奇怪的是,我试图修复此问题,也许是浏览器不兼容)。

如果双击“CONSULTANT”列中的一个单元格,将显示一个html选择框,您可以选择一个顾问将其分配给此任务或取消分配此任务的顾问。这没有问题。

问题是:当用户离开这个选择框打开时,他/她仍然可以打开另一个选择框...我的jQuery代码无法阻止人们打开多个选择框。

你可以通过ctrl-U来查看这个页面上的源代码,并检查“gridview-helper.js”里面的内容。

我想让用户只打开一个选择框。当他/她离开小区时,选择框应该被关闭,在不改变里面的HTML ...

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

感谢任何suggestons提前!

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 =“

+0

不确定你的意思,但我重新检查了你的来源,并注意到你在“onchange之前缺少空间。“ – 2009-11-02 03:41:00

您是否尝试过使用单元上的onmouseout事件,如果鼠标移出被触发删除子下拉框元素?似乎应该工作。

+0

试过了,但是失败了......这会导致无限循环,我无法删除选择框......也许我做错了...... – 2009-10-31 06:49:42