2016-07-18 17 views
1

jQueryを使用して多くの「タブ」に分割されたフォームを作成しました。さまざまなタブに表示されるフィールドがあります。Google chrome jQueryタブを使用して「無効なフォームコントロールにフォーカスがない」

フォームのすべてのフィールドのいくつかが必要とされ、所定の位置に彼らの小切手を持っている、いくつかの最小値を持っている必要がありますが、その他

しかし、私はそれらの場合、フィールドに無効な値でフォームを送信しようとすると、フィールドが現在と異なるのタブの下に、私はGoogleのクロムからコンソールにエラーを取得している:

無効なフォームコントロールは

フォーカス可能ではありませんが、ユーザーは何の効果も見ない、またすることができますの/彼は間違ったフィールドを見つけるsiそれはブラウザによって強調表示されていません。彼らはすべて(フィールドに正しい名前を与えることを言う、しかし

は、私はすでに、次の質問に対する回答を読んだことがあります既に完了している)、または「必須属性」を削除する(それを行うことはできません。理由があります)。

私はサーバー側の検証も行っていることを強調したいと思います。したがって、これはこの質問のトピックではありません。

エラーを回避しながら、HTML5検証をフォームに保存するにはどうすればよいですか?

EDIT:あなたはすぐにフォームをGoogle Chromeでそれをロードし、提出する場合には、実際のフォームよりはるかに簡単であるにも関わらず、私が説明しています何の例を見つけることができます

Here

、あなた」あなたのコンソールにエラーが表示されます。

<form id="form_tabs" name="form_tabs" method="post" action=""> 
    <div id="tabs" class="ui-tabs"> 
    <ul> 
     <li><a rel="tabs" href="#tab1">FIRST TAB</a></li> 
     <li><a rel="tabs" href="#tab2">SECOND TAB</a></li> 
    </ul> 

    <div id="tab1" class="ui-tabs-hide"> 
     <input type="text" name="text1" id="text1" value="" placeholder="I am NOT required"/> 
    </div> 

    <div id="tab2" class="ui-tabs-hide"> 
     <input type="text" name="text2" id="text2" value="" placeholder="I REALLY am required!" required="required"/> 
    </div> 
    </div> 

    <br/> 
    <button type="submit" value="submit"> 
    SEND FORM 
    </button> 
</form> 
+0

私はまた、問題を示すためにフィドルを作成しようとしています。 –

+0

このエラーが発生するのはタブを使用しているためです。現在表示されていないタブは 'display:none'に設定されています。ブラウザはこのような隠しタブ内でフォームフィールドをフォーカスすることはできません。 //タブを使用する場合は、JSとは別に各タブでバリデーションを行う必要があります。そうでなければ、まずは悪いUXだと思います。 – CBroe

+0

私はそれが起こる理由を知っていますが、可能であれば現在のUIとHTML5のチェックを維持したいだけです。ちょうどエラーを横取りして正しいタブを表示してください。 –

答えて

2

を示しています

$("form input").on("invalid", function() { 
    $(this).parents('.parentdiv').find('.div').show() 
}); 

でそれを解決しました:

//when submitted if there was an issue 
$("form input").on("invalid", function() { 
     //find tab id   
     var element = $(this).closest('.ui-tabs-panel').index(); 
     //goto tab id 
     $('#yourTabs').tabs('option', 'active', element) 
}); 
+0

これは私がやったことに似ています –

0

ブラウザでは、無効な制御でタブを表示する方法がわかりません。したがって、手動で処理する必要があります。

document.querySelector('#form_tabs').addEventListener('invalid', function(event) { 
    // Check event.target, and show its owner tab. e.g. 
    event.target.parentNode.classList.remove('ui-tabs-hide'); 
}, true); 
0

私は同じ問題を抱えていたし、これは無効なデータとDIVをポップアップし、これがVilrianaから少しのような答えを動作するように表示されるメッセージ

関連する問題