すでにこの種の問題に対処しているエントリがいくつかあることを知っており、かなりの数を見てきましたが、私の状況ではどれもうまくいかないようです。これに関するヘルプは大歓迎です。
私が持っているのは、動的に生成されたフォームです (さまざまな量の入力が存在する可能性があります)。Enterキーを使用してそれらをタブで移動する必要があります。現在、タブ キーは要素を正常に通過しますが、私の基準では、Enter キーを有効にする必要があります。最終入力に到達して Enter キーを押すと、現在 a タグを介して実行されている送信アクションを実行する必要があります
以下は、キープレスイベントを処理する HTML フォームと JS のコードスニペットです。
<div class="credential_form">
<div class="error_msg">
<h4>There was a problem connecting.</h4>
</div>
<div class="credential_inputs">
<div class="txt_wrapper">
<input type="text" style="width: 130px">
</div>
<div class="txt_wrapper">
<input type="password" style="width: 130px; display: none;" class="real">
</div>
<div class="clear"></div>
</div>
<div class="add_button">
<a class="button" href="javascript:void(0)"><span>Add</span></a>
</div>
<div class="clear"></div>
<div class="sub_input">
<div class="link">
<span class="sub_text">Forget your details? Go to </span>
<a class="sub_link" href="http:somewhere.com">Somewhere</a>
</div>
</div>
</div>
何らかの理由で、コレクション変数が if 条件の現在の要素を認識しません。
var code = (event.keyCode ? event.keyCode : event.which);
if (code == 13) {
var $inputs = $(event.target).closest('.credential_inputs').children($(':input:visible'));
var $addButton = $(event.target).closest('.credential_form').children($('a:first-child'));
if ( $(event.target) == $inputs[$inputs.length - 1] ) {
$addButton.click()
} else {
$(event.target).closest(".credential_inputs").nextAll('input:first').focus();
}
}
ありがとう