2012-04-12 16 views
3

入力キーを使用してフォームの次の入力フィールドに移動できますか?私はまた、タブを使用したいが、Enterキーもいいだろう。Enterキーを使用して入力に移動

FYI - 私はいくつかのテキストエリアを持っていますので、入力するときにEnterキーを使用して返品する必要があります。これは葛藤ですか?

ありがとうございます。暗闇の中で エリック

+1

これは本当に直感的ではありません。なぜなら、テキストエリアの場合、改行も入力できるからです。 – xbonez

+3

できますか?はい。あなたはすべきですか?いいえ。デフォルトのブラウザ動作がうまくいかないのは悪いフォームです。ブラウザはこれを実行するということをユーザーに教えてくれます。それはそうです。少なくとも私のために、もしあなたがそれを逸脱すると、そのWebページは私を苛立たせます。優雅なアイデアの場合は – Snuffleupagus

+0

+1。はい、それは直感的ではありませんが、私は自分の打撃を満たされていない形で入力しています。さて、あなたの質問を考え直し、忘れられた入力に焦点を当ててみると、素晴らしいアイデアです。 (すべての入力が入力された場合は、打つことは入力しても打つことはできません)+100 –

答えて

5

あなたが入力した上でサイクルするフィールドに「TabOnEnter」と呼ばれるクラスを追加した場合。

前の回答のようにかわいい
$(document).on("keypress", ".TabOnEnter" , function(e) 
    { 
    //Only do something when the user presses enter 
    if(e.keyCode == 13) 
    { 
     var nextElement = $('[tabindex="' + (this.tabIndex+1) + '"]'); 
     console.log(this , nextElement); 
     if(nextElement.length) 
     nextElement.focus() 
     else 
     $('[tabindex="1"]').focus(); 
    } 
    }); 

//Hidden inputs should get their tabindex fixed, not in scope ;) 
//$(function(){ $('input[tabindex="4"]').fadeOut(); }) 

はないが、それが動作するようになりました:

http://jsfiddle.net/konijn_gmail_com/WvHKA/

あなたはサイクリング順序を決定するための標準的なHTMLの機能(のtabindex)を使用するこの方法です。非表示の要素は、tabindexを削除する必要があります。

+0

+1。私はクラスのアイデアが好きであり、関数の内容は一般的な原則を示していますが、実際の解決方法では、単に '.next()'を使うのではなく、次に編集可能な要素が何であるか把握する必要があります。 – nnnnnn

+0

@nnnnnn現実世界のソリューションは、私が推測する各入力要素に対してtabindexを設定する必要があります。 – tomdemuyt

+1

私はそれを試しても動作しません。あなたはこれをテストしましたか? – Erik

0

ショット(あなたのテキストエリアが並んでいると仮定した場合):

$(".myTextareas").keypress(function(e) { 
    if(e.which == 13) { 
     $(this).next('.myTextareas').focus(); 
    } 
}); 
関連する問題