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

タブの keyCode を使用してこれを実現する方法を示す例は、http: //jsfiddle.net/pvrSU/ にあります。blur イベントが発生する前に、他の要素がフォーカス可能でなければならないことがわかりました。

4

1 に答える 1

1

show()関数にはコールバックがあり、このcomplete場合はそれを使用できます。

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

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

于 2013-02-27T21:11:34.470 に答える