0

クローズ(X)が押された場合、Boxy は確認を待ちません。以下は、私の問題を説明する例です。

$('form .close').click(function(event) {
    event.stopPropagation();
    Boxy.confirm("Are you sure ?", function() {
        alert('ok');
    });
    return false;
});

ただし、OKボタンをクリックすると、すべてが期待どおりに機能します。

(X)が押された場合、これが期待どおりに機能しないのはなぜですか?

4

2 に答える 2

1

私があなたのために作ったこの例を見てください: http://jsfiddle.net/972ak/

$('form .close').click(function(event) {

            Boxy.confirm("Are you sure ?", function() {
                alert('ok');
            });
            return false;

    });

Boxy のドキュメントには次のように記載されています。

Boxy.confirm(message, callback, options) [OK] ボタンと [キャンセル] ボタンを含むメッセージを表示する、閉じられないモーダル ダイアログを表示します。コールバックは、ユーザーが [OK] を選択した場合にのみ発生します。

http://onehackoranother.com/projects/jquery/boxy/

于 2014-05-26T11:01:11.017 に答える
0

私のコメントで既に述べたように、Boxy.confirmネイティブとは異なり async ですconfirm。コードは、ユーザーが [OK] または [キャンセル] をクリックするのを待たずに実行を続行します。そのため、confirm コールバック内で実際のアクションを実行する必要があります。

次のコードを検討してください。

$('form .close').click(function(e){
    var form = $(this).closest('form');

    Boxy.confirm('Are you sure?', function() {
        form.remove(); //remove it only if user confirmed.    
    });

    form.append('<p>Close was clicked.</p>');

})

このコードは、ユーザーが閉じるリンクをクリックするたびにメッセージを追加します。ただし、ユーザーがアクションを確認した場合にのみ、フォームは実際に削除されます。

http://jsfiddle.net/tarabyte/972ak/4/

于 2014-05-26T11:31:56.067 に答える