【问题标题】:jQuery Mobile Alert/Confirmation dialogsjQuery Mobile 警报/确认对话框
【发布时间】:2011-08-10 11:34:16
【问题描述】:

对于警报和确认对话框,是否有类似 Sencha 的不错的 jQuery Mobile 解决方案?

【问题讨论】:

    标签: dialog jquery-mobile


    【解决方案1】:

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

    <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
    });
    

    【讨论】:

    • 太棒了,很有帮助。谢谢。
    • 此代码似乎可以工作,但请尝试设置对话框、取消、设置取消,然后确认。它将确认两次。基本上继续触发事件。为什么?
    • 这也不是阻塞的。如果您执行areYouSure(&lt;params here&gt;);alert("blabla");,它将显示对话框和警报,这与普通的 javascript 警报/提示不同。对于函数调用之后的任何指令都是如此,而不仅仅是警报...
    • 好方法,我喜欢回调风格!
    • 一个更好的版本是做一个不带标记的版本,即 document.append div 的 html,我有一个用于模式对话框。但不是是/否对话框。
    【解决方案2】:

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

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

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

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

    【讨论】:

    【解决方案3】:

    优秀的代码@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");
    }
    

    谢谢!

    【讨论】:

      【解决方案4】:

      我有类似的问题。我想拥有像标准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

      【讨论】:

      • 足够接近我正在寻找的东西。我最终只是将定义的模式留在页面上,删除了前几行以及 $(event.target).remove();谢谢。
      【解决方案5】:

      这个插件 craftpip/jquery-confirm

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

      使用简单。

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

      支持ajax加载、CSS3动画、响应式等

      [编辑] 详细文档可以看here

      功能列表:

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

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

      【讨论】:

        【解决方案6】:

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

        这是jQuery Example

        更新:

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

        【讨论】:

        【解决方案7】:

        试试,

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

        【讨论】:

        • 它可以工作,但使用默认的 Javascript 对话框。该设计是最小的,在 Android 上它显示了调用 confirm() 函数的页面的 URL。这会让用户感到困惑。
        猜你喜欢
        • 1970-01-01
        • 2014-02-16
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-08-30
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多