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

Javascript 如何防止屏幕上显示多个html选择框?,javascript,jquery,ajax,Javascript,Jquery,Ajax,我一直在做我的基于php+ajax的datagrid项目的最后一部分。除了一件事外,一切都按照我的设计进行:我无法阻止用户打开多个选择框 使用用户名“ChenxiMao”和密码“accedo”登录(无双引号) 请注意,第一次加载页面时,可能不会显示此datagrid中使用的图像(奇怪的是,我正在尝试修复此问题,可能是浏览器不兼容) 如果双击“顾问”列中的一个单元格,将显示一个html选择框,您可以选择一位顾问将其分配给此任务,也可以取消分配此任务中的顾问。没问题 问题是:当用户打开此选择框时,他

我一直在做我的基于php+ajax的datagrid项目的最后一部分。除了一件事外,一切都按照我的设计进行:我无法阻止用户打开多个选择框

使用用户名“ChenxiMao”和密码“accedo”登录(无双引号)

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

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

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

您可以按住ctrl-U键查看此页面上的源代码,并检查“gridview helper.js”中的内容以了解我所做的工作

我想让用户只打开一个选择框。当他/她离开单元格时,选择框应关闭,而不更改其中的html

困惑,今天下午搞砸了


提前感谢您的建议

JavaScript是单线程的,因此您可以添加互斥变量并在打开新的选择框之前检查其值

gridview helper.js的顶部

var is_choice_visible = false;
在双击处理程序中:

$(this).dblclick(function()
{
    if (is_choice_visible)
        return;
    is_choice_visible = true;
...
对于选择框,添加一个
onblur
处理程序,该处理程序将
is\u choice\u visible
设置回
false
,并删除自身

不相关提示:在旧版本的Internet Explorer上,在循环中增长字符串的速度很慢。附加到数组并加入数组更有效,例如:

var html = ["<select>..."];
for (var i in consultantnames)
{
    html.push("<option>...</option>");
}
html.push("</select>");
return html.join("");
var html=[“…”];
对于(咨询公司中的var i)
{
html.push(“…”);
}
html.push(“”);
返回html.join(“”);

您是否尝试过在单元格上使用
onmouseout
事件,并在触发mouse out时删除子下拉框元素?看起来应该有用。

太酷了!谢谢你的提示!我会按照你的方式去做!var htmlStr=“不确定您的确切意思,但我重新检查了您的源代码,发现您在“onchange”之前缺少一个空格。尝试过,但失败了……这将导致无限循环,我无法删除选择框……可能是我做错了。。。