jQuery Mobile Alert / Confirmation对话框

时间:2011-04-21 17:07:16

标签: dialog jquery-mobile

是否有类似Senc​​ha的jQuery Mobile解决方案用于警报和确认对话框?

7 个答案:

答案 0 :(得分:39)

是的,这个插件很棒。但是,如果您不需要完整的功能,那么滚动您自己的简单对话框的重量仍然要轻得多。我用这个:

<div data-role="dialog" id="sure" data-title="Are you sure?">
  <div data-role="content">
    <h3 class="sure-1">???</h3>
    <p class="sure-2">???</p>
    <a href="#" class="sure-do" data-role="button" data-theme="b" data-rel="back">Yes</a>
    <a href="#" data-role="button" data-theme="c" data-rel="back">No</a>
  </div>
</div>

而且:

function areYouSure(text1, text2, button, callback) {
  $("#sure .sure-1").text(text1);
  $("#sure .sure-2").text(text2);
  $("#sure .sure-do").text(button).on("click.sure", function() {
    callback();
    $(this).off("click.sure");
  });
  $.mobile.changePage("#sure");
}

您可以在需要确认对话框的地方使用这些:

areYouSure("Are you sure?", "---description---", "Exit", function() {
  // user has confirmed, do stuff
});

答案 1 :(得分:20)

这个jQM插件将使用jQM样式设置确认框样式

http://dev.jtsage.com/jQM-SimpleDialog/

编辑:此插件现在已被SimpleDialog2支持,可在此处找到:

http://dev.jtsage.com/jQM-SimpleDialog/demos2/

答案 2 :(得分:5)

优秀的代码@ Peter,但是不要生成连续的事件,使用unbind()可能会更好,如下所示:

function areYouSure(text1, text2, button, callback) {
  $("#sure .sure-1").text(text1);
  $("#sure .sure-2").text(text2);
  $("#sure .sure-do").text(button).unbind("click.sure").on("click.sure", function() {
    callback(false);
    $(this).off("click.sure");
  });
  $.mobile.changePage("#sure");
}

谢谢!

答案 3 :(得分:5)

我有类似的问题。我希望有一个易于使用的功能,如标准confirm()

由于jquery mobile 1.4 (documentation)中不推荐使用对话框,所以我决定创建自己的小提琴:

function confirmDialog(text, callback) {
var popupDialogId = 'popupDialog';
$('<div data-role="popup" id="' + popupDialogId + '" data-confirmed="no" data-transition="pop" data-overlay-theme="b" data-theme="b" data-dismissible="false" style="max-width:500px;"> \
                    <div data-role="header" data-theme="a">\
                        <h1>Question</h1>\
                    </div>\
                    <div role="main" class="ui-content">\
                        <h3 class="ui-title">' + text + '</h3>\
                        <a href="#" class="ui-btn ui-corner-all ui-shadow ui-btn-inline ui-btn-b optionConfirm" data-rel="back">Yes</a>\
                        <a href="#" class="ui-btn ui-corner-all ui-shadow ui-btn-inline ui-btn-b optionCancel" data-rel="back" data-transition="flow">No</a>\
                    </div>\
                </div>')
    .appendTo($.mobile.pageContainer);
var popupDialogObj = $('#' + popupDialogId);
popupDialogObj.trigger('create');
popupDialogObj.popup({
    afterclose: function (event, ui) {
        popupDialogObj.find(".optionConfirm").first().off('click');
        var isConfirmed = popupDialogObj.attr('data-confirmed') === 'yes' ? true : false;
        $(event.target).remove();
        if (isConfirmed && callback) {
            callback();
        }
    }
});
popupDialogObj.popup('open');
popupDialogObj.find(".optionConfirm").first().on('click', function () {
    popupDialogObj.attr('data-confirmed', 'yes');
});

}

我注意到奇怪的行为,当在“是”按钮上单击重定向/清除窗口时。它开始在afterClose事件中工作,这就是为什么它有点复杂。

Here is a jsfiddle demo

答案 4 :(得分:1)

这个插件 craftpip/jquery-confirm

最初是为移动设计的,基于bootstrap3框架。 支持警报,确认,模态,对话框和许多选项。

简单易用。

$.alert({
    title: 'title here',
    content: 'content here',
    confirm: function(){
        //on confirm
    },
    cancel: function(){
        // on cancel
    }
})

支持ajax加载,CSS3动画,响应等。

[编辑] 可以找到详细的文档here

功能列表:

  • 主题(包括android主题)
  • Ajax加载内容。
  • CSS3动画(2D和3D动画)
  • 动画退回选项
  • 自动关闭(超时后触发操作)
  • 图标
  • 背景消除(在模态外点击时关闭模态)
  • 键盘操作(ENTER / SPACE触发确认,ESC触发取消)
  • 用于以模态方式更改内容的详细API。

我正积极开发插件,请提出改进​​和功能建议。

答案 5 :(得分:0)

我没有看到任何警报,因为我认为它使用了原生的外观和感觉。您应该能够通过另一个jQuery插件和/或CSS自定义它们。

这是jQuery Example

更新:

现在链接是404,jQM 1.2已经出来并提供弹出窗口:

答案 6 :(得分:-2)

尝试,

if (confirm("Are you sure?"))
{
   /*code to execute when 'Ok' bttn selected*/
}