【问题标题】:.Focus() is not working using jquery or javascript in JQUERY MOBILE [duplicate].Focus() 在 JQUERY MOBILE 中无法使用 jquery 或 javascript [重复]
【发布时间】:2012-12-25 01:01:28
【问题描述】:

可能重复:
iPhone Trigger keyboard in input field (HTML / Javascript)

我正在开发 jquery 移动网站。我想使用 javascript 或 jquery 将焦点放在文本字段上,以便它会弹出键盘。我尝试过.focus(), .select().trigger('focus'),但它不起作用。 --HTML--

<input id='txt' type='search' value='' />

--JQUERY--

$('#txt').focus();  

$('#txt').select();

$('#txt').focus();

【问题讨论】:

标签: javascript jquery iphone keyboard


【解决方案1】:

编辑:不确定您指的是 jquery mobile 还是移动 jquery 网站,但如果您确实在使用 jquery mobile,请参见下文

自从您在上面注意到您正在使用jquery mobile 之后,有几件事:

使用 $(document).on('pageinit'),而不是 $(document).ready():

在 jQuery 中学习的第一件事是在 $(document).ready() 函数,所以一切都会在 DOM 已加载。然而,在 jQuery Mobile 中,Ajax 用于加载 导航时将每个页面的内容放入 DOM,并且 DOM 准备就绪 处理程序仅对第一页执行。每当一个 新页面加载并创建后,您可以绑定到 pageinit 事件。 此事件在本页底部有详细说明。

此外,您可能需要在事件中插入您的 .focus 代码,例如 pagecreate 事件:

在 DOM 中创建页面时触发(通过 ajax 或 其他)但在所有小部件都有机会增强 包含标记。此事件对用户希望最有用 为子标记增强创建自己的自定义小部件作为 jquery 移动小部件可以。

在文档here 上查看更多活动。

如果您只是使用普通的jQuery,那么您可能需要将您的代码包装在$(document).ready(function(){ ... }); 中。这有助于确保加载 DOM 并允许您的 jQuery 选择器 $("#txt") 找到页面上的元素。如果在运行 JavaScript 时 DOM 尚未加载,则将找不到 input

【讨论】:

  • 感谢您的回复...我正在使用 jquery mobile。而且我的代码在 pageshow 事件中,因此 .focus() 每次都会执行。
  • 有什么方法可以用包含focus 调用的pageshow 函数更新您的问题?这样我就可以看一看,看看我是否注意到了什么。谢谢
  • 我发现使用编程实际上不可能专注于文本框。这是可用性问题..
【解决方案2】:

它应该可以正常工作,但既然不行,我会尝试一些不太正常的东西,比如 .click()。你试过了吗?它应该可以工作。

【讨论】:

  • 我也试过了,但它不起作用...:(
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-11-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-05-24
  • 1970-01-01
相关资源
最近更新 更多