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

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

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

Node.jsとはGoogleのV8 JavaScriptエンジンを使用しているサーバーサイドのイベント駆動型プログラムです。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

Q&A

解決済

2回答

734閲覧

インプットボックスのいずれかが空白または0出ない場合の記入方法

kansai5963

総合スコア23

Node.js

Node.jsとはGoogleのV8 JavaScriptエンジンを使用しているサーバーサイドのイベント駆動型プログラムです。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

0グッド

0クリップ

投稿2021/03/26 00:24

編集2021/03/26 03:30

前提・実現したいこと

ホームページに複数個のインプットボックスを作成し、全てが空白または0が入力された場合はXXXを入力してください。といった表示をコメントとして表示したいと考えております。
現在はif文を使用して作成しておりますが、もっと効率的な方法がございましたら教えて下さい。

発生している問題・エラーメッセージ

いずれかのインプットボックスが空白の場合に表示されてしまいます。

エラーメッセージ

該当のソースコード

javascript

1if (aaa==""){ 2}else if (aaa=="0"{ 3 XXXを入力してください 4}else if (bbb==""){ 5 XXXを入力してください 6}else if (bbb=="0"){ 7 XXXを入力してください 8}else if (ccc==""){ 9 XXXを入力してください 10}else if (ccc=="0"){ 11 XXXを入力してください 12}else if (ddd==""){ 13 XXXを入力してください 14}else if (ddd=="0"){ 15 XXXを入力してください 16}else if (eee==""){ 17 XXXを入力してください 18}else if (eee=="0"){ 19 XXXを入力してください 20}else{ 21 console.log('OK牧場')

試したこと

&&で組み合わせたりしましたが一つでも空白または0があった場合にxxxを入力した下さいと表示されてしまいます。

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

ここにより詳細な情報を記載してください。

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

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

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

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

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

miyabi_takatsuk

2021/03/26 01:55 編集

要件の確認です。 「aaa〜eeeのいずれかの入力が、入力があるかつ0以外の数値があれば、OK牧場にする」 でしょうか。 それとも、 「いずれかの入力が、未入力か0だった場合、NGで入力を促すダイアログの表示」 でしょうか。 返信をお願いします。
kansai5963

2021/03/26 01:56

全ての入力が空白または0だった場合に入力を促すダイアログの表示です。&&と||の混合になるかと想定しておりますが・・・
miyabi_takatsuk

2021/03/26 01:58

なるほど。 であれば、私の回答でよさそうです。 質問者さんのコードではなぜいずれかの該当入力でストップしてしまうのか、も回答に含めます。
miyabi_takatsuk

2021/03/26 01:59

もう一点確認ですが、 数値の入力をさせたい、でよろしいでしょうか?
退会済みユーザー

退会済みユーザー

2021/03/26 02:08

donsole.log('OK牧場') cに直しましょう。NG牧場っす。
miyabi_takatsuk

2021/03/26 02:13 編集

あ、donsole.log・・・・。 私も気づいてなかった。 dialogかと思ってました。 ありがとうございます。
kansai5963

2021/03/26 03:31

インプットボックスには数値を入力いたします。
guest

回答2

0

ベストアンサー

例えば、下記のようなHTMLだった場合、

html

1<!-- 共通クラス、numInputを当てておく --> 2<input type="tel" name="aaa" class="numInput"><br> 3<input type="tel" name="bbb" class="numInput"><br> 4<input type="tel" name="ccc" class="numInput"><br> 5<input type="tel" name="ddd" class="numInput"><br> 6<input type="tel" name="eee" class="numInput">

下記のように一括処理ができます。

javascript

1const inputs = document.querySelectorAll('.numInput'); 2 3// let unInput = ''; 4 5// some関数は、配列の要素を走査し、一個でもtrueがあると処理を終了し、論理値を返します。 6// つまり、false(入力がない、または0)である限り、回り続け、全てが、該当の入力なら、falseを返してくれます。 7// そして、この記述なら、NodeListにもsome関数を使用できます。 8const inputOK = [].some.call(inputs, elm => { 9 if (!elm.value || isNaN(elm.value) || Number(elm.value) == 0) { 10 return false; 11 } else { 12 // unInput = elm.name; 13 return true; 14 } 15}); 16 17if (inputOK) { 18 // いずれかの入力があった 19 console.log('OK牧場'); 20} else { 21 // 全ての入力が未入力、もしくは0だった 22 console.log('XXXを入力してください。'); 23}

なぜ質問のコードでは理想の挙動にならないのかの解説

では、なぜ、質問のコードではうまくいかないのか。
ifは、条件が真となったら、それ以降の条件文は通らないからです。

例えば、bbbが未入力だったとしましょう。そうするとどうなるか。

javascript

1// bbbが未入力である 2if (aaa==""){ 3 console.log('XXXを入力してください'); 4}else if (aaa=="0"{ 5 console.log('XXXを入力してください'); 6}else if (bbb==""){ 7 // が通る 8 console.log('XXXを入力してください'); 9}else if (bbb=="0"){ 10 // ここ以降はもう通らない。そのため、OK牧場にも当然到達しない 11 console.log('XXXを入力してください'); 12}else if (ccc==""){ 13 console.log('XXXを入力してください'); 14}else if (ccc=="0"){ 15 console.log('XXXを入力してください'); 16}else if (ddd==""){ 17 console.log('XXXを入力してください'); 18}else if (ddd=="0"){ 19 console.log('XXXを入力してください'); 20}else if (eee==""){ 21 console.log('XXXを入力してください'); 22}else if (eee=="0"){ 23 console.log('XXXを入力してください'); 24}else{ 25 console.log('OK牧場'); 26}

となるため、else if (bbb == "")以降のelse if条件は適用されません。
よって、あくまでif文でやるなら、下記のようになります。

javascript

1if ( 2 (aaa == "" || aaa == "0") && 3 (bbb == "" || bbb == "0") && 4 (ccc == "" || ccc == "0") && 5 (ddd == "" || ddd == "0") && 6 (eee == "" || eee == "0") 7){ 8 console.log('XXXを入力してください'); 9} else { 10 console.log('OK牧場'); 11}

しかし、これでは、要素が増減するたびに、構文を変えねばならないので、
私の構文のように、要素の増減にも自動で処理を行える形の方がよいかと思います。

投稿2021/03/26 00:51

編集2021/03/26 02:15
miyabi_takatsuk

総合スコア9555

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

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

kansai5963

2021/03/26 03:48

要素は5つ以上増えないため上記を採用させていただきます。
guest

0

HTML

1<form> 2<input type="text" name="aaa" pattern=".*[^0].*" required> 3<input type="text" name="bbb" pattern=".*[^0].*" required> 4<input type="text" name="ccc" pattern=".*[^0].*" required> 5<input type="submit" value="send"> 6</form> 7

投稿2021/03/26 00:43

yambejp

総合スコア116724

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

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

miyabi_takatsuk

2021/03/26 01:37

私も回答した後に気づいたのですが、 全ての入力が、未入力、もしくは0だった場合に、ダイアログを出す、 という要件のようです・・・。 いずれかの入力が正しければ、よし、という要件みたいですね、よく見たら。
yambejp

2021/03/26 01:45

else ifでつないでいるのですべての要素に0以外の何かが入力されてないとNG と読んだのですが、解釈が分かれますね
miyabi_takatsuk

2021/03/26 01:54 編集

そうですね・・・。 私も、質問者さんの構文を見て、最初そう解釈したのですが、 > 全てが空白または0が入力された場合はXXXを入力してください。といった表示をコメントとして表示したい > &&で組み合わせたりしましたが一つでも空白または0があった場合にxxxを入力した下さいと表示されてしまいます。 の一文を見て、 もしかして、逆か?と思いました。 質問修正依頼で要件確認してみようと思います。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問