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

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

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

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

JavaScript

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

jQuery

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

Q&A

解決済

3回答

408閲覧

inputのnumber=0の場合は、送信ボタンが押せないように制御する方法

退会済みユーザー

退会済みユーザー

総合スコア0

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

JavaScript

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

jQuery

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

0グッド

0クリップ

投稿2021/11/07 00:25

編集2021/11/07 02:20

以下のコードは、
ユーザーがそれぞれ必要な個数を入力して、
submitボタンをクリックします。

実装したいことは、いずれのnumber要素が1つでも
「1以上」になれば、submitボタンをクリックできることです。
「0」ならクリック不可にします。

javascriptで制御するのがベターと考え、
javascriptコードを書きました。
①と②の処理が分からないのと、
全体的に合っているのか、
ヒントやアドバイス頂ければ幸いです。
どうぞよろしくお願い致します。

php

1<form> 2<input class="count" type="number" name="0" value="0" min="0" max="99" required> 3<input class="count" type="number" name="1" value="0" min="0" max="99" required> 4<input class="count" type="number" name="2" value="0" min="0" max="99" required> 5<input type="submit" value="注文を最終確認する"> 6</form>

javascript

1$('.count').on('change', function () { 2//①input type=submitにclass(.is-show)があるならリムーブする初期化処理 3const count = document.getElementsByClassName('count') 4for (let i = 0; i < count.length; i++) { 5if (count.item(0).value !== "0") { 6//②input type=submitにclass(.is-show)を付与する処理 7} 8}

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

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

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

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

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

m.ts10806

2021/11/07 00:26

分からないなりに書いてみては。
退会済みユーザー

退会済みユーザー

2021/11/07 00:35

ありがとうございます。 まったく分かりません。
m.ts10806

2021/11/07 00:58

1行も書けないならもはや単なる作業依頼です。諦めてください。 何か調べて試してるなら現在できてるところまででも提示してください。
退会済みユーザー

退会済みユーザー

2021/11/07 01:04

分かりました。
m.ts10806

2021/11/07 01:11

2点書いてますが、どちらに「分かりました」なのでしょうか。
退会済みユーザー

退会済みユーザー

2021/11/07 01:23

>何か調べて試してるなら現在できてるところまででも提示してください。 こちらです。
pinkpink

2021/11/07 02:18

アホ、やめろ。プログラミング向いてない。
退会済みユーザー

退会済みユーザー

2021/11/07 02:25

pinkpinkさん、 コメントありがとうございます。
pinkpink

2021/11/07 02:47

追記みたけどやっぱりアホだな。。。
m.ts10806

2021/11/07 03:12 編集

なぜリムーブする必要があるのでしょうか。編集前後で大きく中身が変わっていて話の整合性が取れなくなってると思います。
退会済みユーザー

退会済みユーザー

2021/11/07 03:48

>なぜリムーブする必要があるのでしょうか。 仮に、あるnumberの要素を1にしたとします。 このとき、submitボタンにクラスが付与されます。 そして、そのnumberの要素を0にもどしたとします。 このときに、submitボタンに付与されたクラスを取りたいからです。 >編集前後で大きく中身が変わっていて話の整合性が取れなくなってると思います。 私もそう思います。 いまJavascriptでコードを書いているので、 それが一通り終えた後に必要なら、改めて、質問し直そうと思います。
guest

回答3

0

jQueryを使うとこんな感じ。

js

1$(function(){ 2 $('input[type="submit"]').attr('disabled',true); 3 $(document).on('change blur','form',function(){ 4 let disabled_flg = true; 5 $('input[type="number"].count').each(function(index,element){ 6 if(parseInt($(element).val()) > 0){ 7 disabled_flg = false; 8 return; 9 } 10 }) 11 $('input[type="submit"]').attr('disabled',disabled_flg); 12 }); 13}); 14

int32_tさんの回答通り、イベント監視するならformのほうが良いと思います。

いずれにしてもセレクタの参照の仕方は覚えておいた方が良いと思います。
考え方そのままCSSにも使えます。

投稿2021/11/07 07:30

編集2021/11/07 07:32
m.ts10806

総合スコア80861

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

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

m.ts10806

2021/11/07 07:35 編集

.is-show云々したいのなら イベント冒頭でremoveClass()しておいて、disabled_flg ==trueのときにのみ.addClass() に変更。
退会済みユーザー

退会済みユーザー

2021/11/07 08:06

jQueryのコードありがとうございます。 まだ全てを理解できていませんが、 セレクタの参照の仕方を含め 勉強する事項が分かりました。 また明日以降に コードを眺めてリサーチしています。
guest

0

バブリングする change イベントを <form> で聞いて、そこで判定するとやりやすい気がします。

js

1document.querySelector('form').addEventListener('change', e => { 2 for (let count of e.target.querySelectorAll('.count')) { 3 if (count.valueAsNumber >= 1) { 4 // is-show を足す? 5 e.target.querySelector('[type=submit]').classList..... 6 return; 7 } 8 } 9 // 1以上の値から0に戻すこともできるので、is-show を消す必要がありそう? 10 e.target.querySelector('[type=submit]').classList..... 11});

投稿2021/11/07 03:43

編集2021/11/07 03:52
int32_t

総合スコア21012

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

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

退会済みユーザー

退会済みユーザー

2021/11/07 06:04

分かりづらい質問にも関わらず、 ご回答いただきありがとうございました。 参考にさせていただきましたが、 自分のローテクのようなコードにて実現できました。 教えて頂いた内容は、 私が初心者のため、全部は上手く咀嚼できていませんが これからよく調べます。 本当にありがとうございました。
guest

0

ベストアンサー

以下のコードで実現できました。

考え方は、
submitボタンをデフォルトでdisabledにしておき、
type=numberがクリックされたら、
すべての値を確認して、1以上なら、disabledをリムーブします。

もっとスマートなコードがあるはずですが、
ひとまず今の自分にできる範囲で解決とさせていただきます。

ご回答くださった方々、pinkpinkさんも含め、
ありがとうございました。

javascript

1function countClick(){ 2var example = document.getElementById('example'); 3example.setAttribute("disabled", true); 4const count = document.getElementsByClassName('count') 5for (let i = 0; i < count.length; i++) { 6if (count.item(i).value >= 1) { 7example.removeAttribute("disabled"); 8} 9} 10}

投稿2021/11/07 06:07

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

m.ts10806

2021/11/07 07:17

jQuery使うなら全部jQueryにしたほうが良いですよ。
退会済みユーザー

退会済みユーザー

2021/11/07 07:24

アドバイスありがとうございます。 お陰様で気が付きました。 見直して全部、queryで書き直せるようにいたします。
m.ts10806

2021/11/07 07:28

ざっと作ったのを回答にしておきます。
退会済みユーザー

退会済みユーザー

2021/11/07 07:44

ありがとうございます。 拝見します。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.46%

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

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

質問する

関連した質問