我的jquery对话框在Firefox中无法正常工作,但Firebug不会给我任何错误。我的对话框在Chrome中运行得很好。firefox中的jquery对话框问题:第一次打开后无法输入
情况: 我有几个jQuery对话框在我的网页上打开不同的事件。一个“添加新元素”对话框给我一个问题。第一次打开对话框时效果很好。随后的任何时候,文本输入框都不能被点击或键入。我想我通过每次销毁对话框来解决问题。然后,每当你打开它时它就会起作用。但后来我发现是否有其他对话框打开,然后这个“添加新元素”对话框打开,同样的事情再次发生:无法输入框中。
我很困惑!请任何帮助,将不胜感激...我一直盯着这个代码几天了。
这里是jQuery的对话框代码:
$(function() {
$("#dialog-new-osc-el").dialog({
resizable: false,
autoOpen: false,
height:300,
width:400,
modal: true,
buttons: {
"Create": function() {
*create button function stuff here* then:
$(this).dialog("destroy");
$(this).dialog("close");
create_new_osc_el_dialog();
},
Cancel: function() {
$(this).dialog("destroy");
$(this).dialog("close");
create_new_osc_el_dialog();
}
},
close: function() {
$(this).dialog("destroy");
$(this).dialog("close");
create_new_osc_el_dialog();
}
});
});
而当打开该对话框中的 “添加新的元素” 被点击的div上 - 的div有一个onclick功能:
<div class="addnewbox" onclick="addneweltoosc();">
此的onclick函数看起来像这样(为了简洁起见删除了一些代码):
function addneweltoosc(){
$("#dialog-new-osc-el").dialog("open");
}
对话框的实际HTML很长,这里是重要的东西:
<div id="dialog-new-osc-el" title="Create Element">
<div id="new_osc_el_type" class="pointer">
<ul>
<li onclick="new_osc_el_type_chosen('Branch');">Branch</li>
<li onclick="new_osc_el_type_chosen('Group');">Group</li>
<li onclick="new_osc_el_type_chosen('Division');">Division</li>
<li onclick="new_osc_el_type_chosen('Unit');">Unit</li>
<li onclick="new_osc_el_type_chosen('Strike Team');">Strike Team</li>
<li onclick="new_osc_el_type_chosen('Task Force');">Task Force</li>
<li onclick="new_osc_el_type_chosen('Individual Resource');">Individual Resource</li>
</ul>
</div>
<p><input class="hide" type="text" id="new_osc_el_pos_name" />
</div>
该对话框首先给用户一个可供选择的列表。当用户点击一个列表项时,调用new_osc_el_type_chosen函数。该功能隐藏该列表并显示“new_osc_el_pos_name”文本输入。 这是首次打开对话框时输入框的输入框,但不是之后。这是代码:
function new_osc_el_type_chosen(a)
{
$("#new_osc_el_type").addClass("hide");
$("#new_osc_el_pos_name").removeClass("hide");
if (a=="Branch")
{
$("#new_osc_el_pos_name").val("NAME of Branch Director");
}
document.getElementById("new_osc_el_pos_name").setSelectionRange(0,7);
$("#new_osc_el_pos_name").focus();
}
解决了!
显然,所有的模态对话框都会导致它们之间的冲突......或者某种东西。其实,我不是100%肯定为什么 - 但改变模态:真正的模态:错误解决了我的问题。
我有两次类似的问题,每个都有自己的修复(IIRC)。第一次是当我使用jQuery UI的对话框(我需要使用modal:true),我认为这个问题与z-index属性有冲突(我的输入太低)。第二次是用自制软件元素,这是因为我在受影响的输入上测试了.disableSelection(),并忘记了这一点。 – 2012-09-06 18:25:24
有同样的问题!很烦人!设置模态:假也适用于我,但我不想陷入困境,所以请在下面查看我的答案,以找到解决方案,为我解决这个问题,并仍然提供模态行为。 – nothingisnecessary 2013-04-26 18:08:03