1

jQuery Mobileプロジェクトでは、次のようなスタイルのフィールドと2つのボタンを備えたダイアログボックス(ポップアップではない)を用意します。

        <a data-role="button" data-inline="true" data-transition="none" href="#"
            data-icon="check" data-iconpos="left" id="saveEdit">Save
        </a>
        <a data-role="button" data-inline="true" data-transition="none" href="#"
            data-icon="delete" data-iconpos="left" id="closeEdit">Cancel
        </a>

それらの1つがクリックされると、クリックイベントハンドラーがダイアログを閉じます。

$(document).on("vclick", "#saveEdit", function () {

    LoginCookie(EditDoc, "Y");
    $('.ui-dialog').dialog('close');
});

ただし、これが発生すると、ボタンに対してクリックイベントが発生する場合でも、ダイアログボタンを「通過」する場合とほぼ同じように、ダイアログの「背後」にあるものに対してもクリックイベントが発生します。この動作を防ぐ方法はありますか?

4

2 に答える 2

1

これで修正されたようです。

 $(document).on("vclick", "#saveEdit", function (e) {


            e.preventDefault();


            LoginCookie(EditDoc, "Y");
            $('.ui-dialog').dialog('close');
        });
于 2012-11-01T14:03:29.977 に答える
1

私がうまくいく唯一のことは、モーダルブロッキングを作成することです。特に、ほぼすべての古いAndroidバージョンのように、ラグのあるインターフェイスの場合はそうです。ユーザーがモーダル内の要素をタップして閉じることを意図しています。ハンドラーの一部としてのパターンは次のとおりです。

window.setTimeout(function(){
        $(myModal).on({
            popupbeforeposition: function () { //make the popup blocking - no click outside to close
                $('.ui-popup-screen').off();
            }
        }).popup("open");
    }, 500);

もちろん、これは、ユーザーがモーダルの外側をタップして閉じることはできないことを意味します。しかし、ページにフォームやその他のインタラクティブな要素がたくさんある場合、これは使いやすさにとって非常に重要な調整だと思います。

于 2013-05-22T00:22:12.187 に答える