如何防止在屏幕上显示多个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_visible
回false
,并删除自身。
无关的提示:在旧版本的Internet Explorer中,在循环中增大字符串速度较慢。这是更有效地追加到一个数组中,并加入阵列,例如:
var html = ["<select>..."];
for (var i in consultantnames)
{
html.push("<option>...</option>");
}
html.push("</select>");
return html.join("");
您是否尝试过使用单元上的onmouseout
事件,如果鼠标移出被触发删除子下拉框元素?似乎应该工作。
试过了,但是失败了......这会导致无限循环,我无法删除选择框......也许我做错了...... – 2009-10-31 06:49:42
酷!谢谢你的提示! 我会尝试按照你的方式去做! – 2009-10-31 06:48:37
var htmlStr =“
不确定你的意思,但我重新检查了你的来源,并注意到你在“onchange之前缺少空间。“ – 2009-11-02 03:41:00