2009-08-21 22 views

答えて

211

編集:あなたの要素を動的に挿入されているので、あなたはあなたの例のようにdelegated on()を使用する必要がありますが、あなたが原因@Marcのコメントとして、KeyDownイベントイベントにバインドする必要があり、IEでのKeyPressイベントのdoesn文字以外のキーをキャプチャしないでください:

例を確認してくださいhereを確認してください。 jQueryの1.9で

+0

IE8で\ –

+0

でTabキーを押したときにイベントが発生しない(英数字キーで発生)... .live( 'keypress'、fn)を使用する必要がある –

+0

ライブでのみ動作する場合は、テキスト要素を動的に挿入しています。要素が既にページにある場合は、この例を確認してください:http://jsbin.com/oguhe – CMS

12
$('#textbox').live('keypress', function(e) { 
    if (e.keyCode === 9) { 
     e.preventDefault(); 
     // do work 
    } 
}); 
+2

、e.preventDefault()を使用し、デフォルトのアクションをキャンセルするとテキストボックスがあるとします。関数の最初の行に挿入します。 –

+0

IE6 + –

+0

@JonでKeypressがIEの非文字キーをキャプチャしない – Marc

17

の作業例:

$('body').on('keydown', '#textbox', function(e) { 
    if (e.which == 9) { 
     e.preventDefault(); 
     // do your code 
    } 
}); 
+1

'e.preventDefault();'をダブルクリックしてテキストボックスに空白を挿入しないようにします。 – stil

7

、上記に示す方法では、私は少し古いjqueryのを使用していますすることができる、私のために動作しませんでしたが、最終的に以下のコードスニペットは、のために働く - 念のために投稿します私の同じ位置に誰か

$('#textBox').live('keydown', function(e) { 
    if (e.keyCode == 9) { 
     e.preventDefault(); 
     alert('tab'); 
    } 
}); 
4

タブの下キーを使用しての重要な部分は、タブは常に、すでに何かをしようとすることを知っているが、最後に「falseを返す」ことを忘れないでください。ここで

は私がやったことです。私は.blurと私のフォームフォーカスがどこにあるかを交換する関数で動作する関数を持っています。基本的には、フォームの最後に入力を追加し、ぼかしの計算を実行している間にそこに移動します。

$(this).children('input[type=text]').blur(timeEntered).keydown(function (e) { 
     var code = e.keyCode || e.which; 
     if (code == "9") { 
      window.tabPressed = true; 
      // Here is the external function you want to call, let your external 
      // function handle all your custom code, then return false to 
      // prevent the tab button from doing whatever it would naturally do. 
      focusShift($(this)); 
      return false; 
     } else { 
      window.tabPressed = false; 
     } 
     // This is the code i want to execute, it might be different than yours 
     function focusShift(trigger) { 
      var focalPoint = false; 
      if (tabPressed == true) { 
       console.log($(trigger).parents("td").next("td")); 
       focalPoint = $(trigger).parents("td").next("td"); 

      } 
      if (focalPoint) { 
       $(focalPoint).trigger("click"); 
      } 
     } 
    }); 
2

これを試してみてください:

$('#contra').focusout(function(){ 
    $('#btnPassword').focus(); 
}); 
1

あなたは同上txtNameまた

$("[id*=txtName]").on('keydown', function(e) { 
    var keyCode = e.keyCode || e.which; 
    if (keyCode == 9) { 
    e.preventDefault(); 
    alert('Tab Pressed'); 
} 
}); 
関連する問題