2014-04-24 43 views
0

我使用this来测试表单是否脏。 默认为标准浏览器确认,询问您是否确定要从此页面导航。在jQuery的dirtyforms网站上有一个部分,说你可以使用jquery ui模式表单。jquery脏记录,想要jquery ui模式

所以,我想,像这样添加一个部分(一个div):

<div id="unsavedChanges" title="Save Changes?"> 
      <p>You've made changes to this page. Do you want to leave this page without saving?</p> 
     </div> 

然后我说看起来像什么他们的代码:

$.DirtyForms.dialog = { 
     selector: '#unsavedChanges', 
     fire: function(message, dlgTitle) { 
      $('#unsavedChanges').dialog({ title: dlgTitle, width: 350, modal: true }); 
      $('#unsavedChanges').html(message); 
     }, 
     bind: function() { 
      $('#unsavedChanges').dialog('option', 'buttons', 
       [ 
        { 
         text: "Stay Here", 
         click: function(e) { 
          $.DirtyForms.choiceContinue = false; 
          $(this).dialog('close'); 
         } 
        }, 
        { 
         text: "Leave This Page", 
         click: function(e) { 
          $.DirtyForms.choiceContinue = true; 
          $(this).dialog('close'); 
         } 
        } 
       ] 
      ).bind('dialogclose', function(e) { 
       // Execute the choice after the modal dialog closes 
       $.DirtyForms.choiceCommit(e); 
      }); 
     }, 
     refire: function(content) { 
      return false; 
     }, 
     stash: function() { 
      return false; 
     } 
    }; 

虽然我不知道他们想要我(我最初把它放在document.ready之外,然而,在运行这个并对我的表单进行更改并导航之后,我发现它仍然使用浏览器确认而不是jquery ui对话框。 ?

+0

hmmmm。通过阅读文档,我明白这是从他引用jquery 1.4.2和1.7.2开始就有点古怪了。从那以后,jquery和jquery ui都开始有了。任何人,你可以发布一个这样的小提琴,所以我们可以玩它使用jQuery和你使用的jQuery UI的版本? – Rooster

+0

这看起来像一个更新的等效:http://plugins.jquery.com/are-you-sure/ – Anthony

+0

是否有浏览器相关的安全问题,实际上需要您使用浏览器确认对话框?我认为除了通过onbeforeunload事件(它只能返回一个字符串)之外,浏览器无法通过JavaScript进行浏览。 –

回答

0

自述:当他们试图离开一个页面,而不提交他们已将数据输入表单

肮脏的形式将提醒用户。它在一个模式弹出框中提醒他们,并且回退到浏览器的默认onBeforeUnload处理程序,用于文档范围之外的事件,如,但不限于,页面刷新和浏览器导航按钮。

(重点煤矿)

如果要显示这样的事情一个模式,那么,你根本不可能。 (之所以是安全的原因:很容易想象一个页面阻止用户关闭它,无论他们尝试什么,都不会杀死浏览器实例。)

此外,“但不限于”位很吸引人:我会请向插件的作者询问具体内容,因为它可能与您的使用案例重叠。

3

您可以只有弹出,如果用户试图通过点击您的页面上的锚或其他元素留下一个自定义对话框。

然后,你可以截获所有锚点等点击,防止它,弹出一个自定义对话框来确认。换句话说,当有人点击你网页上的一个元素时,你可以控制,并且可以做任何你想做的事情。

然而,当用户试图通过关闭选项卡或浏览器离开,你无法用JavaScript阻止他们,因为这将是非凡的烦人,如果网站能做到这一点。

提示由关闭标签/浏览器窗口离开用户的唯一方法是使用onbeforeunload事件,并且该事件可以与天然确认对话框中使用,也没有办法来使用自定义对话框或者停止使用用户或者做其他任何事情,因为这可能会导致某些网站创建系统,您永远无法离开网站。