ボタンクリックでポップアップするhtmlフォームでスイートアラートを使用していますが、ポップアップの[OK]ボタンをクリックすると、その後タブインデックスが機能せず、すべてのフィールドをクリックして入力する必要があります。
同じ考えが私にも起こります。
うん、私にも起こります。 また、Enterキーを押してポップアップを閉じると、ページからフォーカスが削除され、クリックせずにページに再度フォーカスすることはできません。
doneFunctionでウィンドウイベントを削除すると、これが解決されます。
swal({
title: "Are you sure?",
text: "You will not be able to recover this imaginary file!",
type: "warning",
showCancelButton: true,
confirmButtonColor: "#DD6B55",
confirmButtonText: "Yes, delete it!",
closeOnConfirm: false
}, function(){
// remove these events;
window.onkeydown = null;
window.onfocus = null;
swal("Deleted!", "Your imaginary file has been deleted.", "success");
});
@fxghqcコールバックでイベントハンドラーを削除すると
+1
これはいつ修正されますか?
+1
私が扱うことができるこのバグのフォークはありますか? @ xiaouze88のコミットの使い方がわかりません。
このバグに関しても厄介な問題があります。
このバグはまだ存在します。 メインのsweetalertデモページでも見ることができます... http://t4t5.github.io/sweetalert/
AJAXの例の[試してみる]ボタンをクリックするだけで、タブが機能しなくなることがわかります。 デバッガーで、window.onfocusがnullのアフターワードに復元されていないことがわかります。 手動で設定すると、タブを再度使用できます。 しかし、swal()に渡されるコールバック関数でnullに設定しても、私には機能しません。 そこでnullに設定しましたが、Sweetalertの内部で、プロセス全体が終了する前に元に戻しています。 数秒後にデバッガーに侵入すると、これが確認されます。
修正してください!
この動作も確認できます。 それは断続的で、最高のタイプのバグです...
ダイアログが閉じられた後でも、おそらくダイアログがトリガーされる前でも、 window.onkeydown
イベントが関数にバインドされているのがわかります。
私もまったく同じ問題を経験しています。 SweetAlertポップアップを閉じると、 tabindex
設定されていても、ページのフォームのタブが機能しなくなります。
明日、これを修正してPRを行います。
2017年1月3日火曜日21:15、Neelnotifications @ github.comは次のように書いています。
私もまったく同じ問題を経験しています。 SweetAlertポップアップが表示されたとき
が閉じていると、ページのフォームのタブは、tabindexが設定されていても機能しなくなります。—
コメントしたのでこれを受け取っています。
このメールに直接返信し、GitHubで表示してください
https://github.com/t4t5/sweetalert/issues/391#issuecomment-270197639 、
またはスレッドをミュートします
https://github.com/notifications/unsubscribe-auth/AHWwZbRIQD1HLSs4WpN87HRyeBlvGgcuks5rOp43gaJpZM4FNSiU
。
それは本当に素晴らしいでしょう@EduardJSありがとうございます。
今のところ、別のスレッドで
(function (){
var _swal = window.swal;
window.swal = function(){
var previousWindowKeyDown = window.onkeydown;
_swal.apply(this, Array.prototype.slice.call(arguments, 0));
window.onkeydown = previousWindowKeyDown;
};
})();
REF: https :
@ Mr-匿名
アップデート
var _swalclose = window.swal.close;
var _swal = window.swal;
window.swal = function(){
var previousWindowKeyDown = window.onkeydown;
_swal.apply(this、Array.prototype.slice.call(arguments、0));
window.onkeydown = previousWindowKeyDown;
};
window.swal.close = function(){
_swalclose.apply(this);
};
わお! このスレッドを見つけました。 なぜタブが機能するのか、機能しないのか疑問に思うことに何日も費やしました。 今、私は時々甘いアラートを使用していることに気づきました、そしてそれがそれが止まった理由です!
誰かがまだこれの修正に取り組んでいますか、そして今のところそれに対処するための最良の解決策は何ですか?
編集:上記のsweetalert2メッセージを見たところです。 別のバージョンがあることを知らなかったので、試してみますが、移行するにはかなりの作業が必要です。
@elasticsteveこのリポジトリの他のスレッドに注意を払うと、このスレッドがもう維持されていないことに気付くでしょう。
SweetAlert2と呼ばれる別のリポジトリがあります。これは実際にアプリを移植する必要があります。
それでもこのバージョンを使用したい場合は、これが唯一の解決策です。 PRをするのを忘れてしまいました。時間が足りませんでした。 @ edwin1217のソリューションはあなたが行くべきものです。
@ edwin1217の解決策は、私がしばらく前にスレッド#127に投稿したものとほぼ同じです。
みんな、ありがとう。 SweetAlert2に移植しようとしましたが、あきらめなければなりませんでした。 closeOnConfirm: false
簡単なテキスト入力を行うことができませんでした。 3時間無駄にした後、私は元に戻り、上記の提案を試します。
@kosstはい、ソリューションははるかに優れています。 @ edwin1217のソリューションでは、OKおよびエラーメッセージ(入力テキストモーダル)のデフォルトのEnterキーアクションが機能しないためです。
ここでも、私にとって最も効果的なものは次のとおりです。
(function (){
var close = window.swal.close;
window.swal.close = function() {
close();
window.onkeydown = null;
};
})();
}
本当に久しぶりですが、この関数全体を別の関数で呼び出す方法を教えていただけませんか。 このスニペットをコントローラーのどこに配置する必要がありますか?
function(isConfirm){ //Function that triggers on user action.
if(isConfirm){
$scope.myData.splice(index,1);
SweetAlert.swal("Deleted!");
} else {
SweetAlert.swal("Your file is safe!");
}
変化する -
closeOnConfirm:false
に -
closeOnConfirm:true
それだけです...それは私のために働いた
最も参考になるコメント
@kosstはい、ソリューションははるかに優れています。 @ edwin1217のソリューションでは、OKおよびエラーメッセージ(入力テキストモーダル)のデフォルトのEnterキーアクションが機能しないためです。
ここでも、私にとって最も効果的なものは次のとおりです。