2010-11-30 78 views
6

這只是最古怪的事情。我有一個Sammy.js應用程序,並且我想在加載HTML之後立即將注意力放在文本字段上。我有這樣的CoffeeScript在這裏:無法在文本字段上設置焦點()

this.partial('templates/my-template.jqt').then -> 
    i = $('#item') 
    debugger 
    i.focus() 

雖然我在調試器中,對上那行,我可以檢查的「i」,並認爲它是一個jQuery對象。我甚至可以調用i.val(「HI THERE!」)並查看我的文本字段更新。但是,調用i.focus()完全沒有。有沒有一些安全功能,我不知道,不讓你專注於動態加載的文本元素?

+0

CoffeeScript ftw – drozzy 2012-01-12 17:42:48

+0

順便說一句,你怎麼知道你可以做什麼「。然後」的部分?在我的生活中,我無法弄清楚Sammy.js api docs中「部分」方法的返回結果。你如何看待這些東西? – drozzy 2012-01-12 17:44:36

回答

0

如果您確定自己獲得了$('#item') object.You可以嘗試一些東西。

請確保您只有一個輸入框與<input type="text" id="item" />。不應該重複同名id。

接下來的事情是爲什麼你不試試$('#item').focus()

謝謝。 與問候,

瓦西姆

2

JQuery的焦點()不注重的元素,它綁定一個事件處理程序進行對焦。 http://api.jquery.com/focus/

嘗試使用i.get()。focus()來代替。

+0

其實,當我做$('input [type = text]')。focus()時,它適用於Chrome,但不適用於iOS。這是實際的文件:https://github.com/pkulak/mealfire_mobile/blob/master/coffeescripts/add_extra.coffee – 2010-11-30 19:33:30

1

做這樣的:

i.trigger 'focus' 
4

嘗試:

setTimeout(function() { $('#item').focus() }, 1); 

這是很常見的問題。由於某些原因延遲1ms的重點使其工作。