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

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

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

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

jQuery

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

Q&A

解決済

3回答

364閲覧

ラジオボタンチェック時にテキストフォームを表示するには

tukino-hikari

総合スコア26

JavaScript

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

jQuery

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

0グッド

0クリップ

投稿2019/06/04 04:02

完全素人ですが、宜しくお願いいたしますm(_ _)m。

ラジオボタンをチェックした時に、その横にテキストフォームを表示するにはどうしたら良いのでしょうか?

ラジオボタンは3個あり、そのうち2つ目又は3つ目のラジオボタンがチェックされたときだけ、それぞれテキストフォームが表示されるようにしたいです。チェックが入っていないラジオボタンの横のテキストフォームは非表示にしたいです。

ネットで色々調べてソースを書いてみたのですが、動きませんでした。

どこを修正すればよいのかご指導お願いいたします。

jQueryへの書き直しでも構いません。

<input type="radio" name="kakougenba" value="社内" checked="checked" id="syanai" onClick="changeDisplay()">社内
<input type="radio" name="kakougenba" value="外注" id="gaityu" onClick="changeDisplay()">外注
<input type="text" name="kakougenbatxt" class="text-c" id="kgt">
<input type="radio" name="kakougenba" value="社内と外注" id="syanai_gaityu" onClick="changeDisplay()">社内&外注
<input type="text" name="kakougenbatxt2" class="text-c" id="kgt2">

<script type="text/javascript"> function changeDisplay() { if ( document.getElementById('syanai').checked ) { document.getElementById('kgt').style.display = none; document.getElementById('kgt2').style.display = none; } if ( document.getElementById('gaityu').checked ) { document.getElementById('kgt2').style.display = none; } if ( document.getElementById('syanai_gaityu').checked ) { document.getElementById('kgt').style.display = none; } } window.onload = changeDisplay; </script>

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

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

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

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

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

m.ts10806

2019/06/04 04:06

コードはマークダウンのcode機能を利用してご提示ください。
m.ts10806

2019/06/04 04:06

>動きませんでした。 実際に起きている現象、エラーなど、具体的にご提示ください(これだけでは起きている問題は伝わりませんので)
m.ts10806

2019/06/04 04:21

回答はしましたが、回答を見る前に質問を編集していただければと。
guest

回答3

0

CSS

1input[type="text"] { 2 visibility: hidden; 3} 4 5input:checked + input[type="text"] { 6 visibility: visible; 7}

投稿2019/06/04 04:52

x_x

総合スコア13749

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

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

yambejp

2019/06/04 04:59

labelをつかわないならこれで十分かもしれないですね
tukino-hikari

2019/06/05 02:37

ありがとうございます。CSSだけでできるとは思いもしませんでした!
guest

0

構造をちょっといじっていいならこんな感じ

CSS

1<style> 2[name=kakougenba] ~ input {display:none} 3[name=kakougenba]:checked ~ input {display:inline} 4</style> 5<span> 6<input type="radio" name="kakougenba" value="社内" checked="checked" id="syanai"><label for="syanai">社内</label> 7</span> 8<span> 9<input type="radio" name="kakougenba" value="外注" id="gaityu"><label for="gaityu">外注</label> 10<input type="text" name="kakougenbatxt" class="text-c" id="kgt"> 11</span> 12<span> 13<input type="radio" name="kakougenba" value="社内と外注" id="syanai_gaityu"><label for="syanai_gaityu">社内&外注</label> 14<input type="text" name="kakougenbatxt2" class="text-c" id="kgt2"> 15</span>

投稿2019/06/04 04:43

yambejp

総合スコア114843

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

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

tukino-hikari

2019/06/05 02:40

ありがとうございます。CSSだけでできるとは思ってもいませんでした。また勉強になりました!
guest

0

ベストアンサー

JavaScriptが動いてないっぽいときはまず初めにブラウザのデベロッパーツールを起動してConsoleを確認しましょう。

イメージ説明

赤い通知があればそれは構文エラーがあることを示しています。

エラーがあったら、そのエラーを調査です。

「デバッグ」を覚えましょう。

  • [Chromeのデベロッパーツールで

JavaScriptをデバッグする方法(2019年版)](https://ics.media/entry/190517/)

きちんとデバッグができるようになるとそれだけで大抵のことは自己解決できるようになります。
もちろん構文ミスだけでなく、ロジックがおかしいとか、そういう混んだところも確認してミスに気づくことができるようになります。


エラー内容的には「noneという変数はないよ」ということになります。
JavaScriptをはじめ、ほとんどのプログラミング言語は「クォーテーション"(ダブルクォーテーション)'(シングルクォーテーション)以外はプログラムで取り扱う変数や定数とみなす」ようにできています。

つまり「変数か文字列か」をきちんと区分けしてあげる必要があります。

style.displayに指定できるのは「文字列」なので、「文字列そのもの」か「文字列を格納した変数」を指定してあげる必要があります。

文字列そのもの

js

1document.getElementById('kgt').style.display = "none";

文字列を格納した変数

js

1const none = "none";

上記いずれかで、これでエラーがなくなります。

ただ今のままだと「初期は全部非表示」というだけで「ラジオボタンは3個あり、そのうち2つ目又は3つ目のラジオボタンがチェックされたときだけ、それぞれテキストフォームが表示されるようにしたい」が実装されていません。

none → display に切り替える処理ですね。

ここは既にご自身で書かれたように
「そのうち2つ目又は3つ目のラジオボタンがチェックされたときだけ、それぞれテキストフォームが表示」と文章で仕様を書かれていますので、
きちんとそのタイミングを感知して、表示、非表示の制御をしてください。

投稿2019/06/04 04:20

m.ts10806

総合スコア80850

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

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

tukino-hikari

2019/06/04 04:56

ありがとうございました。解決いたしました!
m.ts10806

2019/06/04 04:57

デバッグについてはどのような場面でも有用ですので、この機会に覚えて自己解決していってください。
tukino-hikari

2019/06/04 07:01

ありがとうございます。勉強します!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問