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

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

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

HTML5 (Hyper Text Markup Language、バージョン 5)は、マークアップ言語であるHTMLの第5版です。

JavaScript

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

CSS

CSSはXMLやHTMLで表現した色・レイアウト・フォントなどの要素を指示する仕様の1つです。

Q&A

解決済

2回答

494閲覧

Javascript イベント発火 

daiku0919

総合スコア4

HTML5

HTML5 (Hyper Text Markup Language、バージョン 5)は、マークアップ言語であるHTMLの第5版です。

JavaScript

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

CSS

CSSはXMLやHTMLで表現した色・レイアウト・フォントなどの要素を指示する仕様の1つです。

0グッド

0クリップ

投稿2023/02/15 01:42

実現したいこと

現在、簡易的なフォームを作成していてアカウント登録の完了のポップを表示するところをJavascriptで実装しています。
ユーザーが名前、ニックネームを共に入力せず追加ボタンを押した際に下記の画像のようなポップが表示されてしまいます。
実装としては無入力の場合、ボタンの操作を無力化したいです。

該当のソースコード

test.js var result = document.getElementById("result"); var tuikaBtn = document.getElementById("tuikaBtn"); tuikaBtn.addEventListener('click', function() { let namae = document.getElementById("namae"); let nickname = document.getElementById("nickname"); let okresult = window.confirm(`${namae.value} さん(${nickname.value})を登録します。よろしいですか?`); if ( okresult ) { result.textContent = `${namae.value} (${nickname.value})`; alert(`${namae.value} さん(${nickname.value})にて登録しました。`); } else { } }); tuikaBtn.addEventListener("input", update); tuikaBtn.addEventListener("change", update); function update() { const isRequired = tuikaBtn.checkValidity(); if (isRequired) { tuikaBtn.disabled = false; return; } }

試したこと

参考文献などがないか調べましたが、あまりなくどなたかご教授お願い致します。

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

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

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

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

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

maisumakun

2023/02/15 01:47

「下記の画像」はどこでしょうか?
guest

回答2

0

必要項目が入力されるまでボタンが押せないというならこんな感じで

javascript

1<script> 2window.addEventListener('DOMContentLoaded', ()=>{ 3 const e_input = new CustomEvent("HTMLEvents"); 4 e_input.initEvent('input', true, true ); 5 document.querySelector('[required]').dispatchEvent(e_input); 6}); 7document.addEventListener('input',()=>{ 8 const flg=[...document.querySelectorAll('[required]')].filter(x=>x.value=="").length>0; 9 btn.disabled=flg; 10}); 11</script> 12<input type="text" required> 13<input type="text" required> 14<input type="text" required> 15<input type="submit" value="btn" id="btn">

投稿2023/02/15 03:56

yambejp

総合スコア114829

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

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

daiku0919

2023/02/15 05:35

ご教授頂きまして有り難う御座います。 こういった書き方もあるのだと知れました。 有難うございます。
guest

0

ベストアンサー

画像がないので推測ですが、おそらく名前もニックネームも空欄のまま、「 さん()にて登録しました。」というポップが出る、ということですよね?

空欄の場合はボタンを有効にしない、ということであれば、以下のような記述でどうでしょう。

javascript

1const namae = document.getElementById("namae"); 2const nickname = document.getElementById("nickname"); 3const tuikaBtn = document.getElementById("tuikaBtn"); 4 5setInterval(() => { 6 tuikaBtn.disabled = !namae.value || !nickname.value; 7});

フォームのイベントを取得する方法だと、こんな感じで。

javascript

1const namae = document.getElementById("namae"); 2const nickname = document.getElementById("nickname"); 3const tuikaBtn = document.getElementById("tuikaBtn"); 4 5namae.addEventListener("input", checkInput, false); 6nickname.addEventListener("input", checkInput, false); 7 8function checkInput(){ 9 tuikaBtn.disabled = !namae.value || !nickname.value; 10}

追記です。

おそらくここの部分の記述がちょっと違うんですかね?

javascript

1tuikaBtn.addEventListener("input", update); 2tuikaBtn.addEventListener("change", update);

ボタンのイベントを取得するのではなく、inputフィールドのイベントを取得するのが適切かと。

javascript

1namae.addEventListener("input", update); 2nickname.addEventListener("input", update);

投稿2023/02/15 01:58

編集2023/02/15 02:02
miwakazuo

総合スコア52

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

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

daiku0919

2023/02/15 05:33

ご教授頂きまして有難うございます。 ご指摘頂いた箇所修正したら実装ができました。 有難うございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問