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

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

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

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

Q&A

解決済

3回答

864閲覧

入力フォーム3つ入力したらスクリプトを発火する処理を教えてください。

TTT.s

総合スコア1

JavaScript

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

0グッド

1クリップ

投稿2021/12/28 23:25

前提・実現したいこと

入力フォーム3つ入力したらスクリプトを発火する処理を行いたいです。

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

入力フォーム1つの場合は、change イベントを使用して対応できたのですが、
入力フォーム3つ入力したらスクリプトを発火するというスクリプトの記述がわかりません。

該当のソースコード

入力フォーム1つの場合
●html
<input size="20" type="text" name="name-form" onblur="blurFunction()" id="name-form"/><p class="check" style="display: none;"><span class="chk"></span></p>

●javascript
var name_form = document.getElementById("name-form");
name_form.addEventListener("change",function(){
$('#name p.check').css('display', 'inline-block');
});

試したこと

入力フォーム1つの場合のように考えてみたんですけど、3つ入力時にスクリプトを発火することができませんでした。

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

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

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

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

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

退会済みユーザー

退会済みユーザー

2021/12/29 21:12

質問者さん、無言ですが、回答したのでそれに対するフィードバックを書きましょう。役に立った/立たなかったぐらいはすぐ返せるのでは? 役に立たなかったならどこがダメだったかを書くと、より期待に近い回答が出てくるかも。とにかく無言は NG です。
guest

回答3

0

ベストアンサー

3個といわず何個でも。

js

1<!DOCTYPE html> 2<meta charset="utf-8"> 3<title></title> 4<style> 5 input:invalid { 6 border: 1px red solid; 7 } 8</style> 9 10 11<body> 12<form id="hoge"> 13 <p>2桁の数値を入力してください 14 <ul> 15 <li><input type="text" name="fuga0" pattern="^\d{2}$" required> 16 <li><input type="text" name="fuga1" pattern="^\d{2}$" required> 17 <li><input type="text" name="fuga2" pattern="^\d{2}$" required> 18 </ul> 19</form> 20 21 22<script> 23 24class A { 25 constructor ([...elements], callBackFunc) { 26 this.es = elements; 27 this.cbFunc = callBackFunc; 28 } 29 30 fire () { this.cbFunc (); } 31 check () { !this.es.every (e=> e.checkValidity ()) || this.fire (); } 32 handleEvent (event) { !this.es.includes (event.target) || this.check (); } 33 34 static create (elements, eventType, callBackFunc, useCapture = false) { 35 let that = new this ([...elements], callBackFunc); 36 elements[0].form.addEventListener (eventType, that, useCapture); 37 return that; 38 } 39} 40 41//___________ 42 43//呼び出したい関数 44function ok () { 45 alert ('成立です'); 46} 47 48//対象となる要素 49let es = document.querySelectorAll ('input[name^="fuga"]'); 50 51A.create (es, 'change', ok); 52 53 54 55</script>

投稿2022/01/03 07:52

babu_babu_baboo

総合スコア616

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

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

TTT.s

2022/01/04 11:55

コードありがとうございます。 めちゃくちゃ助かりました。 selectのフォーム場合も上記内容を変更して対応可能ですかね?
guest

0

入力フォーム1つの場合は、change イベントを使用して対応できたのですが、
入力フォーム3つ入力したらスクリプトを発火するというスクリプトの記述がわかりません。

その「入力した」いうのが change イベントの発生だけで良いわけではなくて、有効な入力か否かを正規表現などを使って検証し、検証結果が OK であれば「入力した」ということにしたいのでは? 

であれば、3 つ全部の「入力フォーム」の change イベントにリスナーをアタッチして、その中で検証を行い、3 つとも検証結果が OK であれば続けて処理を行う、検証結果が NG であれば何もしないで即 return するというようにしてはいかがですか?

投稿2021/12/29 00:27

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

0

ありがとうございます。やりかた調べてみます。

投稿2022/01/03 04:58

TTT.s

総合スコア1

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

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

退会済みユーザー

退会済みユーザー

2022/01/03 05:29

回答に対するコメント・レスは回答欄の下の「コメント投稿」に書いてください。質問者が回答欄に書くとスレッドの流れ・内容が訳が分からなくなりますので NG です(自己解決した場合の解決策を書くのは除く)。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問