私は頭痛を受けています!私はこのコードを今何時間も作業していますが、なぜ動作していないのか分かりません。フォームが分割され、1つの部分が完成すると、ナビゲーションバーの次のタブをクリックしてフォームの次の部分に進むことができます。次の部分が挿入され、ユーザーはフォームを続行できます。これは、関数のアクションとしてマウスのクリックを使用する場合はうまく動作しますが、ユーザーが「Tab」キーを使用して移動する場合、スライドフォームは正しく完全にはスライドしません。私は、フォームの前の部分の一部を、フォームの現在の部分とともに、まだ見えています。これは、マウスのクリックのために働く私がこれまで持っているコードです:マウスをクリックするだけでなくタブキーでスライドフォームをナビゲートします
$('#navigation a').bind('click',function(e){
var $this = $(this);
var prev = current;
$this.closest('ul').find('li').removeClass('selected');
$this.parent().addClass('selected');
/*
we store the position of the link
in the current variable
*/
current = $this.parent().index() + 1;
/*
animate/slide to the next or to the corresponding
fieldset. The order of the links in the navigation
is the order of the fieldsets.
Also, after sliding, we trigger the focus on the first
input element of the new fieldset
If we clicked on the last link (confirmation), then we validate
all the fieldsets, otherwise we validate the previous one
before the form slided
*/
$('#steps').stop().animate({
marginLeft: '-' + widths[current-1] + 'px'
},500,function(){
if(current == fieldsetCount)
validateSteps();
else
validateStep(prev);
$('#formElem').children(':nth-child('+ parseInt(current) +')').find(':input:first').focus();
});
e.preventDefault();
});
今、私はそれが私がこのコード(と\またはこのコードのバリエーション)を使用する「タブ」キーを動作させるためにしようとすると、しかし、何も動いていないようにみえ:
$('#navigation a').bind('keypress',function(e){
var $this = $(this);
var prev = current;
$this.closest('ul').find('li').removeClass('selected');
$this.parent().addClass('selected');
/*
we store the position of the link
in the current variable
*/
current = $this.parent().index() + 1;
var $fieldset = $(this);
$fieldset.children(':last').find(':input').keypress(function(e){
if (e.keyCode == 9){
$('#steps').stop().animate({
marginLeft: '-' + widths[current-1] + 'px'
},500,function(){
if(current == fieldsetCount)
validateSteps();
else
validateStep(prev);
$('#formElem').children(':nth-child('+ parseInt(current) +')').find(':input:first').focus();
});
e.preventDefault();
}
});
});
あなたはそれが動作してJSFiddleでオーバー働いていないかを確認することができます:http://jsfiddle.net/GTmwU/13/
すべてのヘルプは大歓迎です!ここ
@Inrbobありがとうございました!私はマウスのクリックを動作させるのに使用したのと同じコード構造を使用しようとしていましたが、明らかに動作しませんでした!ですから、shift + tabメソッドを使って後方へ移動するバインディングメソッドを作成するには、idステートメントの条件とスライドが起こる方向を変更するだけで、ほとんど同じコードを使用する必要がありますか?私はあなたがイベントにキーをバインドするのを知っている代替方法を知ることに興味があります。再度、感謝します! – Michael
心配はいりません。前に使用した別の方法は、各入力にフォーカスリスナーをバインドすることです。それから発火すると、現在の領域が見えるかどうかを確認するのは簡単ですが、そうでなければ正しい領域をスライドさせます。私は速いモックアップを始めましたが、あなたの現在のために必要な変更がたくさんあるかもしれないと思いますセットアップ。問題は、要素に焦点を当てると、視点に飛びます。私は通常、非表示要素を 'display:none'や何らかのもので隠します – lnrbob