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

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

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

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

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

CSS

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

Q&A

解決済

2回答

801閲覧

inputタグの文字入力数に応じて送信ボタンの背景色を変化させたい。

tkmvictim

総合スコア2

jQuery

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

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

CSS

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

0グッド

0クリップ

投稿2020/06/03 09:08

前提・実現したいこと

inputタグの文字入力数に応じて送信ボタンの背景色を変更したい。

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

jQueryで入力数を受け取り、文字数が0のときは送信ボタンの背景色をlightgreen,1以上の時はgreenにしようとしています。
入力した際の背景色の変化は付けれたのですが、文字を削除した際の変化が付けれません。

該当のソースコード

HTML

1<div class="email"> 2 <input type="email" id="email-input"> 3 <a href="" class="addEmail">メールアドレスを追加</a> 4</div>

SCSS

1.email { 2 position: relative; 3 input { 4 display: block; 5 width: 450px; 6 height: 60px; 7 border-radius: 5px; 8 border: 1px solid white; 9 font-size: 14px; 10 } 11 .addEmail { 12 position: absolute; 13 top: 16%; 14 right: 17%; 15 text-decoration: none; 16 font-size: 18px; 17 font-weight: 800; 18 padding: 9px 15px; 19 color: white; 20 background: lightgreen; 21 border-radius: 5px; 22 transition: all 300ms; 23 } 24 }

jQuery

1$('#email-input').on("keydown", function(){ 2 var input = $('#email-input').get(0); 3 var count = input.value.length 4 if(count => 1) { 5 $('.addEmail').css('background','green'); 6 }else if (count == 0) { 7 $('.addEmail').css('background','lightgreen'); 8 } 9});

補足情報(FW/ツールのバージョンなど)

jQuery 3.5.1

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

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

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

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

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

guest

回答2

0

ベストアンサー

こちらでいかがでしょうか?

jQuery

1$('#email-input').on("keydown", function(){ 2 var input = $('#email-input').get(0); 3 var count = input.value.length 4 if(count > 0) { 5 $('.addEmail').css('background','green'); 6 }else if (count == 0) { 7 $('.addEmail').css('background','lightgreen'); 8 } 9});

if(count > 0) {
としてみると、こちらの環境では動作しました。

(なぜなのか、説明はできないのですが..)

投稿2020/06/03 09:28

new1ro

総合スコア4528

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

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

kei344

2020/06/03 09:34

そこですね。「=>」でなく「>=」ですね。
new1ro

2020/06/03 11:45

確かに!「>=」ですね。 tkmvictimさん if(count >= 1) { でもOKっぽいです。
tkmvictim

2020/06/03 12:53

不等号の指摘ありがとうございます。 countをconsole.log(count);として出力させ確認してみたのですが、文字が入力された際は認識しているのですが文字をBackSpaceキーを押して消去した際は認識されていませんでした。 やはりinputイベントを使う必要があるみたいです。
tkmvictim

2020/06/03 13:00

on()のイベントをkeydownからkeyupに変更したら動作しました。 皆さん回答ありがとうございました。
guest

0

input イベントを試してみてはいかがでしょう。

【HTMLElement: input イベント - Web API | MDN】
https://developer.mozilla.org/ja/docs/Web/API/HTMLElement/input_event

投稿2020/06/03 09:13

kei344

総合スコア69606

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問