2017-04-13 1 views
0

2つのフォームのランディングページがあり、1つのフォームのみが表示されます。最初のフォームは年齢確認フォームです。条件が満たされたら、jQuery .toggle()を使用して次のフォームに切り替えます。ページのロードで、良いUXのために、私はこのコード行で最初のフォームフィールドにカーソルを置くために.focus()を使用しています:$("input[name='month']").focus();JS - フォーカス/ Toggling Div後にカーソルを再度選択

// Focus cursor on first input field 
 

 
$("input[name='month']").focus(); 
 

 
var age = 19; 
 
// After calculating age based on user input, toggle the elements 
 

 
if (age >= 18) { 
 
    $('#age-verification').toggle(); 
 
    $('#subscribe').toggle(); 
 
} else { 
 
    $('#age-verification').html('<h2>Sorry, you must be at least 18 years old.</h2>'); 
 
}
<div id="age-verification"> 
 
    <h2>Must be 18, please verify age</h2> 
 
    <input type="number" name="month" /> 
 
    <input type="number" name="day" /> 
 
    <input type="number" name="year" /> 
 
    <button id="age-gate-submit">Submit</button> 
 
</div> 
 

 
<form id="subscribe" action="#" method="post"> 
 
    <input type="text" name="email" /> 
 
    <input type="text" name="zip" /> 
 
    <button id ="subscribe" type="submit">Submit</button> 
 
</form> 
 

 
<script src="https://code.jquery.com/jquery-3.1.0.js"></script>

どのように私は.select()focus()のいずれかを使用することができますまたは.toggle()イベントの後、<input type="text" name="email" />の2番目のフォームの最初のフィールドにカーソルを置く方法はありますか?私は.toggle()の後に直接.focus()イベントを配置しようとしましたが、論理的だが成功していないようです。

$('#subscribe').hide(); 

はデモの作業:あなたが最初の購読フォーム非表示にする必要が

答えて

1

あなたの応答のためのhttp://jsbin.com/kihepujewi/edit?html,js,output

+0

おかげで、それは動作しますが、私は少し混乱しています。私のdivは既に 'display:none'に設定されていたので、' .hide() 'を最初に使う必要があるのはなぜですか? –

+1

@JoelB私が作った唯一の他の本当の変化は、あなたがユーザー入力を介して取得すると言われる年齢変数をハードコーディングしていたと私は信じています。 –

+0

私はこのコードを私の側に持っていますが、例のためにここに投稿することは間違いありません。ありがとうございました! –

関連する問題