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

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

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

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

jQuery

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

Q&A

解決済

2回答

1005閲覧

Aに値がある場合とBに値がある場合の見た目の変化のさせ方[jQuery]

Fetherion

総合スコア60

JavaScript

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

jQuery

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

0グッド

0クリップ

投稿2018/11/30 10:11

###はじめに
あるデータがあったときに、表示自体はされていますが、Aに値がある場合はBの欄の色を変えて入力不可にしたり、その逆もありということをしたいと思っています。

その要素の特定などが、よくわからず質問いたします。

###デモデータ

PHP

1$demo['demo'][] = [ 2 ['A' => 1, 'B' => 111,], 3 ['A' => 2, 'B' => 222,], 4 ['A' => 3, 'B' => 000,], 5 ]; 6$demo['demo'][] = [ 7 ['A' => 1, 'B' => 000,], 8 ['A' => 2, 'B' => 222,], 9 ['A' => 3, 'B' => 111,], 10 ];

上記のようなデータがあったとします。
これを表示させます。

###表示

HTML

1<table> 2 <thead> 3 <tr> 4 <th>A</th> 5 <th>B</th> 6 <th>C</th> 7 </tr> 8 </thead> 9 <tbody> 10 <?php for($i = 0; $i < count($demo); $i++) : ?> 11 <tr> 12 <?php for($j = 0; $j < 3; $j++) : ?> 13 <td> 14 <input type="hidden" name="demo[$i][$j][num]" value="<?$demo[$i][$j]["A"]?>"> 15 <input type="text" name="demo[$i][$j][body]" value="<?=$demo[$i][$j]["B"]?>"> 16 </td> 17 <?php endfor; ?> 18 </tr> 19 <?php endfor; ?> 20 </tbody> 21</table>

表示させた後に値を変更して送信することを想定して、フォーム仕様にしています。
横に並べるように表示させて、今回のでもの場合は2行のテーブルが表示されると思います。

###やりたいことの説明
今回のデモデータにおいて、A===1とA===3はどちらかにしか基本的には値が入らないという条件が一つあります。
今回の000はあくまでもdefault値と思っていただければと思いますが、、、

今回のテーブルでは横に3列のテーブルができます。

A===1A===2A===3
111222000
000222111

この時に上記の場合000のセルのフォーム部品を編集できないようにdisabledになるようなスクリプトを考えています。
もちろん、下記のような表の場合

A===1A===2A===3
000222000
000222111

両方が値がない場合はどちらも入力できるような状況とします。

※両方に値をいれてから送信したらどうするの?ということは今回は置いておいてください。

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

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

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

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

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

x_x

2018/12/03 07:09

すべてにデータがあるように見えますが、「値がない」というのはどういう状態を指していますか? また、PHPでHTML出力時に制御しないのでしょうか?
Fetherion

2018/12/03 10:38

「値がない」というのは、確かに厳密に言えば不適切な状況でした。ここでいう「値がない」というのは「000という値である」ということです。””ではなく”000”ですね。PHPとHTMLでの出力でやるというやり方は確かにできるのですが、今回それをjQueryとかでやるならどうやるのかな?と思ったしだいです。
guest

回答2

0

ベストアンサー

動作確認しました。

js

1var table = [$('tbody > tr:eq(0) input[type=text]'), $('tbody > tr:eq(1) input[type=text]')]; 2for ( var i=0; i!=4; i+=2 ){ 3 if ( table[0][i].value === table[1][i].value) continue; 4 if ( table[0][i].value === '000') table[0][i].disabled='disabled'; 5 if ( table[1][i].value === '000') table[1][i].disabled='disabled'; 6}

投稿2018/12/03 11:31

Lhankor_Mhy

総合スコア36074

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

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

0

これでどうですか?

js

1 $('input').change(function() { 2 if(!$(this).val() == '') { 3 $(this).siblings().attr("disabled"); 4 $(this).siblings().css({background:"#f00"}); 5 }

投稿2018/11/30 16:51

akihiro3

総合スコア955

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

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

Fetherion

2018/12/03 10:36

回答ありがとうございます。 動作等確認してみます。
akihiro3

2018/12/04 07:48

ご指摘ありがとうございます 動作確認で問題ないのでvalueがtrueで使える認識でした しかし1.6以降はprop()なのですね。 確認不足でした、申し訳ございません。 あと、「値がない」=""ではないとの事でしたので、この回答自体が検討違いでした 重ねて申し訳ございません。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問