jqueryui对话框无法在firefox 11中“select()”输入
jqueryui dialog not able to `select()` input in firefox 11
我在Windows7上的Firefox 11中运行这段代码。(请参见http://jsfiddle.net/QStkd/)。
$('<div><input type="text" value="val" /></div>').dialog();
输入中的值没有被选中,这在Chrome和IE中是这样做的,如果我手动调用select()
方法,它也不起作用。
这是已知的问题吗?有什么方法可以选择吗?计时器可以工作,但如果我在jsfiddle加载后单击run
,它就不再工作了。
这看起来像是在Chrome上调用focus()
(jquery ui默认情况下对第一个选项卡元素执行此操作)(不能在OS X上测试IE),它会聚焦框并选择框中的文本。
摘自jquery.dialog.ui.js:
// set focus to the first tabbable element in the content area or the first button
// if there are no tabbable elements, set focus on the dialog itself
$(self.element.find(':tabbable').get().concat(
uiDialog.find('.ui-dialog-buttonpane :tabbable').get().concat(
uiDialog.get()))).eq(0).focus();
另一方面,Firefox似乎只在调用焦点时将光标放在框内。因此,您必须在对话框创建后隐式调用select,以实现您想要做的事情
如果您重新加载计时器fiddle(而不是单击run),您会注意到该示例每次都有效。我认为jsFiddle实际上是罪魁祸首(可能是hashchange事件,或者在按下"run"后某个窗格上的某个焦点事件——我还没有深入研究)。
编辑:(很抱歉,太晚了)看起来"问题"的根本原因是Firefox。不确定这是否是设计行为,但据我所见,Firefox似乎不允许在同一页面上的不同内容窗格内的两个不同输入元素中同时选择文本。这似乎不会影响Chrome(当然也不会影响IE9)。
我在本地做了一个快速的例子,它有两个并排的iframe(让我们称它们为左和右)。左边包含一个文本区域,右边包含您的jquery ui对话框——类似于您发布的fiddle。右边有以下代码:
<script type="text/javascript">
$('<div><input type="text" value="val" /></div>').dialog();
$('input').select();
</script>
左边有以下代码:
<script type="text/javascript">
setTimeout( function() {
$('textarea').focus();
}, 1000);
</script>
如果你把这些拼凑在一起,在Firefox中查看结果,你会注意到输入是聚焦的并被选中的,直到左边的文本区域被聚焦。我怀疑类似的事情正在jsFiddle中发生。
尝试使用ui对话框的open
事件。打开对话框时会触发此事件。
$('<div><input id="yourInput" type="text" value="val" /></div>').dialog({
open:function(){
$("#yourInput").focus().select();
}
}
)
http://jsfiddle.net/sergeir82/A6Wah/8/
http://jsbin.com/etivej/4/
这是dom中的FF问题,用于确定是否设置了DOCTYPE
。没有一个很好的方法来解决它,一个定时器的重点往往是"破解"。然而,还有另一个步骤,如果您的Doctype设置为w3-xhtml标准,则可以使用this
将其集中选中。添加onfocus="this.select();"
作为输入的属性,这样当它被聚焦时,它会立即被选中。
- 如何对jQuery屏蔽文本输入执行.select()
- 在JavaScript中捕获select(下拉列表)上的键输入
- 如何将html中select选项的输入与javascript一起使用
- 在select元素中添加和删除提交的输入值
- 添加一个具有select大小的输入文本
- 使用基于输入类型 = radio/checkbox/select 的 jQuery 进行验证
- jqueryui对话框无法在firefox 11中“select()”输入
- jQuery获取更新的select输入的值
- jqueryhtml操作不适用于select输入
- 加载DOM后,如何使用jQuery从Select输入中获取值
- 更新data.table中的select输入值
- 使用JavaScript更改Select输入的值
- PHP, MYSQL + javascript?生成基于三个用户SELECT输入的结果(price)
- 可以'当第一个select的值改变时,让jquery设置select输入的值
- 目标标签没有相邻的"select"输入
- JQuery -只比较select输入中所有选项的一部分文本,并选择匹配的那个
- 从react中映射的select输入中获取选定值
- 在ajax调用后填充额外的select输入
- 使用带有select输入的FileReader
- 在select输入时多次调用select2()会使其消失