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

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

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

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

Q&A

解決済

1回答

4026閲覧

jQueryのpropが正常に作動しない。

tn3376ams

総合スコア20

jQuery

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

0グッド

0クリップ

投稿2020/11/25 07:51

二つのボタン、searchとsendがあります。
初期ではsearchのみ活性、sendを非活性にして置き、searchで検索した場合のみsendボタンを活性化しようと考えています。

ボタンは以下の通りです。
<button type="submit" id="search_button">search</button>
<a href="/send" id="send_button" disabled>send</a>

jQueryは以下の設定です。

<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.1/jquery.min.js"></script> <script> jQuery(function($) { $('#search_button').click(function() { $('#send_button').prop('disabled', false); }); }); </script>

この設定でsearchボタンをクリックしても全く反応しません。
ちなみに、
$('#send_button').removeAttr('disabled');
とすると一瞬チカっと活性化するのですが、すぐに非活性になってしまいます。

また、
var result = $('#send_button').prop('disabled', false);
alert(result);
とするとfalseが表示されるとどこかに書いてあったのですが、[object Object]が表示されます。

原因及び解決方法を教えていただけないでしょうか。
よろしくお願い致します。

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

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

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

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

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

yambejp

2020/11/25 07:57

なんかダブってるみたいなのでどちらかを削除依頼出してください
tn3376ams

2020/11/26 01:06

両方に返事を頂いてしまっています。 どうすればいいでしょうか?
tn3376ams

2020/11/26 01:09

すみません、もう片方に書き込みをいただいた方ですね。 こちらに書き込みなおしていただいてよろしいでしょうか?
guest

回答1

0

ベストアンサー

初期ではsearchのみ活性、sendを非活性にして置き、

いまのコードだと、初期でも、sendは非活性になってないですね。
クリックすると、/sendへ遷移してしまいます。

その原因は、HTMLの仕様上、a要素には、disable属性が効かないからだと思います。
https://developer.mozilla.org/ja/docs/Web/HTML/Element/a

aタグをクリックできないようにする方法として、
CSSのpointer-events:noneを使う
というのがあるようです。

html

1<a href="/send" id="send_button" class="disabled">send</a>

css

1a.disabled { 2 pointer-events: none; 3}

ただし、このままだとキーボード操作(TABキーとかEnterキー)によりa要素を押せてしまうので、tabindex属性を使ってそれを抑止します。

html

1<a href="/send" id="send_button" class="disabled" tabindex="-1">send</a>

活性化するときは、disabledクラスを削除して、tabindex属性値を0に変えれば良いでしょう。

javascript

1$('#search_button').click(function() { 2 $('#send_button').removeClass('disabled').attr('tabindex', 0); 3});

ちなみに、
$('#send_button').removeAttr('disabled');
とすると一瞬チカっと活性化するのですが、すぐに非活性になってしまいます。

この現象は、私の環境では再現しませんでした。

var result = $('#send_button').prop('disabled', false);
alert(result);
とするとfalseが表示されるとどこかに書いてあったのですが、[object Object]が表示されます。

それで正しいと思います。prop('disabled', false)はjQueryオブジェクトを返すはずなので。

投稿2020/11/25 11:01

gpsoft

総合スコア1323

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

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

tn3376ams

2020/11/26 01:26

試してみましたが、.removeAttr('disabled')の時と全く同じチカッと一瞬活性するというものでした。 他の方からアンカーにdisabledは使えないということを聞き、sendを <button type="submit" id="send_button" disabled>send</button> として試したところ同じチカッと一瞬活性でした。 今回は $('#csv_export').prop('disabled', false); でも同じ現象が起きました。
tn3376ams

2020/11/26 02:38

こちらもこの動きで正しく動作できることは確認しました。 ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問