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

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

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

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

jQuery

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

Q&A

解決済

1回答

688閲覧

disabled属性をつけるとsweetalertがでてこなくなる

yushiDDR

総合スコア7

JavaScript

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

jQuery

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

0グッド

0クリップ

投稿2020/03/17 13:36

前提・実現したいこと

お世話になってます。
テキストエリアが未入力の場合、disabled属性をtrueにし、入力されている場合はdisabled属性をfalseにしてsweetalertを出したい。

###問題点
disabledがfalseになると、sweetalertが出ず値を送ってしまいます。
アラートで確認後、値をおくりたいです。

ご存じのかた宜しくお願いします。

試したこと

disabled属性をつけなければアラートは正常に動きます

HTML

1<form> 2 <input type="text" id=namedata> 3 <button type="submit" id="button-a"> 4 5 </button> 6</form> 7

Javascript

1<script> 2 3 4if ($(this).val().length < 1 || $("#namedata").val().length < 1) { 5   $("#button-a").prop("disabled", true); 6} else { 7   $("#button-a").prop("disabled", false); 8} 9 10 11$("#button-a").click(function(){ 12 13Swal.fire({ 14 title: '確認', 15 text: "本当に依頼通知しますか?", 16 type: 'warning', 17 showCancelButton: true, 18 confirmButtonColor: '#3085d6', 19 cancelButtonColor: '#d33', 20 confirmButtonText: '依頼する', 21 cancelButtonText: 'やめる' 22}).then((result) => { 23 if (result.value) { 24 Swal.fire( 25 '依頼完了!', 26 'ご登録ありがとうございます', 27 'success', 28 ); 29 document.myform.submit(); 30 }else{ 31 Swal.fire({ 32title: 'キャンセルしました' 33 }); 34 } 35}); 36event.preventDefault(); 37}); 38 39 40 41</script> 42 43 44

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

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

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

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

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

guest

回答1

0

ベストアンサー

ざっくり見ただけですが、イベントリスナは最低でも2つ定義する必要があります
ユーザが実際に行う操作手順とイベントのあり方を考える必要があります)。

  1. window : load / DOMContentLoaded などで button[disabled] の初期値をチェック

(BODYの末尾に記述したり、HTMLでbutton[disabled]を定義するなら不要)
2. #namedata : change イベントで 未入力の場合 を判別し button[disabled] を変更する
3. #button-a : button[disabled=false] で判断(SweetAlert利用)

テキストエリアが未入力の場合、disabled属性をtrueにし、入力されている場合はdisabled属性をfalseにしてsweetalertを出したい。

イベント 1. はBODY末尾で実装されているはずですが、thisWindow となるスコープなので不要です。
イベント 2. の処理がありません、入力値を削除した際に対応してください。

javascript

1let checkInput = () => { 2 let val = $("#namedata").val();// "" or anyString 3 $("#button-a").prop("disabled", !Boolean(val) ) 4} 5checkInput(); // 初期化 6$("#namedata").change(checkInput); // 入力の取りやめに対応

イベント3. のリスナに引数 eventがないので、event.preventDefault(); は動きません。

投稿2020/03/17 22:55

AkitoshiManabe

総合スコア5434

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

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

yushiDDR

2020/03/18 01:15

解決しました!ありがとうございます
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問