質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
jQuery

jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

Q&A

解決済

2回答

676閲覧

ボタンをクリックすると未入力項目へカーソルが当たるjQueryについて

k-teratail

総合スコア17

jQuery

jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

0グッド

0クリップ

投稿2020/05/26 08:47

編集2020/05/26 09:09

前提・実現したいこと

jQuery初心者です。
アンケートで未入力項目がある場合、送信ボタンを押したときに未入力になっている項目にカーソルが当たるjQueryを教えていただきたいです。

該当のソースコード

【イメージはこんな感じです。】
inputやselectはblockクラスで、くくられています。
送信ボタンをクリックすると、一番最初の未入力のinput項目へカーソルが入った状態にしたいです。

<div id="step"> <div class="block"> <div class ="radio"> <input type="radio" name="card"> <input type="radio" name="card"> <input type="radio" name="card"> </div> <div class="block"> <div class ="text"> <input type="test" name="familyName"> </div> <div class ="text"> <input type="test" name="firstName"> </div> </div> <div class="block"> <div> <select name="form1:birthMonth"> <option value="01">1月</option> <option value="02">2月</option> <option value="03">3月</option> <option value="04">4月</option> <option value="05">5月</option> <option value="06">6月</option> <option value="07">7月</option> <option value="08">8月</option> <option value="09">9月</option> <option value="10">10月</option> <option value="11">11月</option> <option value="12">12月</option> </select> </div> </div> <div class="block"> <div class ="text"> <input type="test" name="kanafamilyName"> </div> <div class ="text"> <input type="test" name="kanafirstName"> </div> </div> <div class="block"> <div class ="text"> <input type="password" name="kaiin"> </div> </div> <div id="Btn1"> <a href="">送信</a> </div> </div>

試したこと

調べながら書いてみましたがうまく動きませんでした。

$('Btn1').click(function(){ $('.block').find('input[type="text"],input[type="password"]').each(function() { if(this.value ==""){ $(this).focus(); } }); });

補足情報(FW/ツールのバージョンなど)

windows

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

kei344

2020/05/26 09:05

(質問文は編集できます)質問文のHTML/JavaScriptはそれぞれコードブロックで囲んでいただけませんか? ```(バッククオート3つ)で囲み、前後に改行をいれるか、コードを選択して「<code>」ボタンを押すとコードブロックになります。
k-teratail

2020/05/26 09:10

ご指摘ありがとうございます!codeで囲ってみました。見やすくなりました!
guest

回答2

0

ベストアンサー

普通にrequiredをつけるだけでカーソルあたりませんか?

HTML

1<form> 2<input type="text" name="a" value="123" required><br> 3<input type="text" name="b" value="456" required><br> 4<input type="text" name="c" value="" required><br> 5<input type="text" name="d" value="789" required><br> 6<input type="text" name="e" value="0ab" required><br> 7<input type="submit" value="send"> 8</form>

追記

javascript

1<script> 2$(function(){ 3 $('form').on('submit',function(e){ 4 var item=$(this).find('input').filter(function(){return $(this).val()=="";}); 5 if(item.length>0){ 6 e.preventDefault(); 7 item.eq(0).trigger('focus'); 8 } 9 }); 10}); 11</script> 12<form> 13<input type="text" name="a" value="123"><br> 14<input type="text" name="b" value="456"><br> 15<input type="text" name="c" value=""><br> 16<input type="text" name="d" value="789"><br> 17<input type="text" name="e" value="0ab"><br> 18<input type="submit" value="send"> 19</form>

投稿2020/05/26 09:16

編集2020/05/26 09:43
yambejp

総合スコア116726

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

k-teratail

2020/05/26 09:22

回答ありがとうございます!jQueryだけで実装したいのですが、requiredをつける方法もあるんですね!参考にさせていただきます。
yambejp

2020/05/26 09:43

jQueryの処理も追記しておきました
k-teratail

2020/05/26 10:41

早急なご回答ありがとうございます!一つ一つ解読しながら読んでみます!
guest

0

とりあえず動くようにはしましたが、根本的にフォームで値を送るには、全体をform要素で囲んだ上でinput type="submit"などを置く必要があります。a要素では単純にページ移動するだけです。

js

1//$('Btn1').click(function(){ 2// ↓ IDセレクタ 3$('#Btn1').click(function(){ 4$('.block').find('input[type="text"],input[type="password"]').each(function() { 5if(this.value ==""){ 6$(this).focus(); 7} 8}); 9return false; // これが無いとページ移動する 10}); 11```**動くサンプル:**[https://jsfiddle.net/cfaLzhb5/](https://jsfiddle.net/cfaLzhb5/)

投稿2020/05/26 09:22

kei344

総合スコア69606

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

k-teratail

2020/05/26 10:40

動くサンプルまで丁寧にありがとうございます!こちらのカーソルですが、ボタンを押したときに意味回答項目の一番上にフォーカスさせるにはどうしたらよいでしょうか?
kei344

2020/05/26 10:44

yambejpさんの例示されているような方法(先に「value ==""」の要素を特定しておいてその0番目にフォーカス)を採ればできますよ。
k-teratail

2020/05/26 14:01

ありがとうございます!やってみます!!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問