2013-02-27 43 views
0

我正在尋找一種方法來觸發焦點事件,該事件在元素被識別爲可在DOM內聚焦後發生。將焦點設置爲隱藏的元素

我在之前的輸入中顯示了表單元素。這樣可行。 然後我想爲用戶輸入設置焦點。

下面的函數無法工作,除非我用setTimeout在行上設置了一個斷點。 我試過使用也失敗的函數回調。

function triggerFocus(id,timeout){ 
    console.log('triggerFocus') ; 
    console.log(id) ; 
    /* the following works if a breakpoint is set*/ 
    setTimeout(function() { $(id).focus() }, timeout) ; 
} 

/* code used to show the elements from another function */ 
if ($('#first').val() == '') { 
    $('#firstRow').show() ; 
    $('#middleRow').show() ; 
    $('#lastRow').show() ; 
    $('#emailRow').show() ;  
    triggerFocus($('#first'),100) ;  
} else { 
    $('#docket').blur(docketBlur) ; 
    $('#firstRow').show() ; 
    $('#docketRow').show() ; 
    triggerFocus($('#docket'),100) ;  
} 

一個例子展示瞭如何使用標籤鍵代碼來實現,這是在http://jsfiddle.net/pvrSU/ 我發現,模糊事件被觸發之前的其他元素必須成爲焦點。

+0

如何顯示的元素?添加一些代碼。 – 2013-02-27 20:59:25

+0

'$('#emailRow')。'show()' – Ramunas 2013-02-27 21:10:44

回答

1

show()功能有complete回調,則可以在這種情況下使用它:

$('#emailRow').show(400, function(){ 
. 
. 
. 
}) 

例子:http://jsfiddle.net/ar5wS/

+0

後面缺少分號我已經試過了。我會再試一次。謝謝。 – 2013-02-27 21:16:15

+0

@kjtl:也許試試'.show(0)'。 – 2013-02-27 21:20:04

+0

沒有回調...我會嘗試。我的機器上的回調函數失敗。 – 2013-02-27 21:23:09