2012-02-28 73 views
3

我有最初是被禁用的輸入的文本框。啓用輸入文本框然後其聚焦 - jQuery Mobile的

<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(); 
}); 

如何啓用文本框然後將其關注?

+0

$。( 「:輸入[@名稱= '計數']」)removeAttr( 「無效」); $( 「:輸入[@名稱= '計數']」)聚焦(); – 2012-02-28 12:26:56

+0

首先刪除禁用的attr而不是關注它。像$(「:input [@ name ='count']」)。removeAttr(「disabled」) $(「:input [@ name ='radio']」)。focus(); – 2012-02-28 12:29:17

+0

都能跟得上...這是行不通的...... – 2012-02-28 17:37:56

回答

3

看來這是一件錯誤的選擇...雖然文本輸入框得到啓用,它沒有得到專注,而我嘗試了:

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

但是當我試圖這樣,它的工作:

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

我無法解釋爲什麼會這樣......


編輯: 它有一些東西到與選擇器,因爲它也可以工作:

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

但我仍然爲什麼使用第一選擇無法理解,文本框被啓用,但不集中......

+1

如果您正在使用jQuery移動很好的解決方案,我的猜測是,該頁面有超過一個名爲count的輸入(這很容易錯過使用jqMobile,因爲通常你的整個網站是「在頁面上」,jqMobile正在處理性感動畫以在同一頁面上的元素之間翻轉)。這似乎是你的id更獨特(或者jQuery不知道爲了查找id而返回多個結果),並且因此爲你解決:) – 2012-02-28 20:39:50

+0

nope ...那不是問題...我的文本輸入的名稱是獨一無二的,我只是在這裏稱之爲「計數」來簡化問題......我說的「某些其他文本框」聚焦的名稱不同,它始終是頁面上的最後一個輸入文本框。 .. – 2012-02-28 22:18:12

1

下面的代碼嘗試

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

我已經嘗試過,但我得到這個錯誤在Firebug控制檯:「未捕獲的異常:不能調用到初始化的TextInput現有技術方法;試圖調用方法‘啓用’」 ..其他建議? – 2012-02-28 17:28:01

+0

使用javascript document.getElementById(「count」)。focus();我已經使用了上面的jquery移動代碼,並且它在所有瀏覽器中工作正常。 – Hkachhia 2012-02-29 04:53:42

+0

好的答案它解決了我的問題,這是從更再用3小時... ...爲jQuery Mobile的 – Anup 2014-07-10 09:59:08

0

你必須這樣做的pageshow。

$("#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 
相關問題