启用一个输入文本框并将焦点聚焦于它 - jQuery Mobile

3
我有一个最初是禁用状态的输入文本框。
<input type="text" name="count" id="count" value="0" disabled="true" data-theme="b" />

当我选中单选按钮时,我希望启用并聚焦文本框,但当我点击单选按钮时,它会启用文本框并将焦点集中在其他文本框上。我认为这是因为文本框最初被禁用,无法聚焦禁用的输入。

$(":input[@name='radio']").live('change', function() { 
  $(":input[@name='count']").removeAttr("disabled").focus();
});

如何启用文本框并将焦点放在它上面?


$(":input[@name='count']").removeAttr("disabled"); $(":input[@name='count']").focus(); - Sam Arul Raj T
先移除禁用属性,然后将其聚焦。例如:$(":input[@name='count']").removeAttr("disabled") $(":input[@name='radio']").focus(); - Amit Soni
不行...它不能工作... - Marius Stănescu
4个回答

3

看起来选择器有些问题……虽然文本输入框已经启用了,但是它没有获得焦点,我尝试过:

$(":input[@name='count']").removeAttr("disabled").focus();

但是当我尝试了这个方法,它起作用了:

$("#count").removeAttr("disabled").focus();

我无法解释为什么会发生这种情况...


编辑: 这与选择器有关,因为这个也有效:

$("input[name='count']").removeAttr("disabled").focus();

但我仍然不明白为什么使用第一个选择器时,文本框被启用,但没有聚焦...


1
如果您正在使用jquery-mobile,我的猜测是页面上有多个名为“count”的输入(在jqMobile中很容易忽略,因为通常您的整个站点都“在页面上”,而jqMobile正在处理性感动画,仅在同一页上的元素之间切换)。看起来您的id更加唯一(或者说jQuery知道不返回id查找的多个结果),因此这对您起作用 :) - Will Buck
不,那不是问题所在。我的文本输入名称是唯一的,我只是在这里将其称为“count”以简化问题。我所说的“其他一些文本框”具有不同的名称,并且它始终是页面上最后一个输入文本框。 - Marius Stănescu

1

尝试下面的代码

$('#count').textinput('enable').focus();

我已经尝试过了,但是在Firebug控制台中出现了这个错误:“未捕获的异常:无法在初始化之前调用textinput上的方法;尝试调用方法'enable'”...还有其他建议吗? - Marius Stănescu
使用JavaScript document.getElementById("count").focus();。我已经使用了上述jQuery Mobile代码,在所有浏览器中都可以正常工作。 - Hkachhia
很好的答案,解决了我超过3个小时的问题...对于jQuery Mobile来说是一个不错的解决方案。 - Anup

0

你必须在页面显示时完成它。

  $("#mainPage").on("pageshow", function (e) {
    $('#searchField').focus();
});

关于

<body class="ui-mobile-viewport ui-overlay-c">
    <div data-role="page" data-add-back-btn="true" id="mainPage">
        <div data-role="header" data-theme='b'>
           <input type="text" id="searchField" placeholder="Search" />
        </div>
    </div>
</body

0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接