[解決済み] jQuery setTimeout()関数 [重複]について
2022-03-02 19:13:51
質問
私はJSの初心者で、単純に見えるかもしれないいくつかの課題に直面しています。
私がやりたいことは
- ユーザーが'submit'と書かれたボタンをクリックした場合
- ボタンをクリックすると、「submit」の文字が「please wait...」 & に変わり、ボタンが無効化されます。
- ボタンは2秒間無効化されます。
- 2秒後に「please submit...」という単語が「submit」&に変わり、ボタンが有効になります(無効ではなくなります)。
以下のようなコードを書きました。これについて何かアドバイスがあれば、とてもありがたいです。
html
<form action="#" method="post">
<input type="button" name="submit" value="Submit" class="submit_wide" id="myBtn" >
</form>
javascript
$(".submit_wide").click(function () {
$(this).val('Please wait..');
$(this).attr('disabled', true);
setTimeout(function() {
$(this).attr('disabled', false);
$(this).val('Submit');
}, 2000);
});
解決方法は?
この問題は
setTimeout()
を呼び出します。
this
はボタンを参照しません。ボタンへの参照を保持するための変数を設定する必要があります。
以下にサンプルを作成しました。という変数を使っているところを見てください。
$this
.
$(".submit_wide").click(function () {
var $this = $(this);
$this.val('Please wait..');
$this.attr('disabled', true);
setTimeout(function() {
$this.attr('disabled', false);
$this.val('Submit');
}, 2000);
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<input type="button" class="submit_wide" value="Submit"/>
UPDATE
モダンブラウザに対応し
矢印機能
を変更しないようにすることができます。
this
コンテキストを使用します。以下の更新されたスニペットをご覧ください。
$(".submit_wide").click(function () {
$(this).val('Please wait..');
$(this).attr('disabled', true);
setTimeout(() => {
$(this).attr('disabled', false);
$(this).val('Submit');
}, 2000);
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<input type="button" class="submit_wide" value="Submit"/>
関連
-
[解決済み】JS ファイルが net::ERR_ABORTED 404 (Not Found) を取得する)
-
[解決済み】ETIMEDOUTエラーの対処方法は?
-
[解決済み] jQueryで要素が非表示になっているかどうかを確認するには?
-
[解決済み] jQueryでチェックボックスに "checked "を設定する
-
[解決済み] jQueryの「exists」関数はありますか?
-
[解決済み] どのラジオボタンが選択されているかをjQueryで知るにはどうしたらよいですか?
-
[解決済み] jQueryでページを更新するにはどうすればよいですか?
-
[解決済み] jQueryでテーブルの行を追加する
-
[解決済み] jQueryで要素にスクロールする
-
[解決済み】jQueryでチェックボックスがチェックされているかどうかを確認するにはどうすればよいですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】Heroku:ノードアプリで「このアプリにはデフォルトの言語が検出されませんでした」エラーがスローされる
-
[解決済み】フォームコントロールの値アクセサがない
-
[解決済み】TypeError: 'undefined'はオブジェクトではありません。
-
[解決済み】Uncaught TypeError: nullのプロパティ'value'を読み取ることができない
-
[解決済み】JavaScript ランタイムエラー:'$'が未定義です。
-
[解決済み】 Uncaught Error: Invariant Violation: 解決済み】 Uncaught Error: Invariant Violation: Element type is invalid: expected a string (for built-in components) or a class/function but got: object.
-
[解決済み】React-Routerの子が1つしかない。
-
[解決済み】TypeError: res.status は関数ではありません。
-
[解決済み】PhantomJS 2.1.1を使用してReactJSアプリケーションをレンダリングできない理由とは?
-
[解決済み] コールバック内で正しい `this` にアクセスする方法