【问题标题】:prompting a user when leaving page离开页面时提示用户
【发布时间】:2014-05-30 16:01:19
【问题描述】:

在我的页面上,我有一个名为 cbOrderSpareCustomer 的组合框。 默认情况下,选定的索引设置为 0。

当用户更改它时,我会考虑包含数据的页面,当用户决定离开该页面时,我想提示他让他知道数据将丢失。

我看过很多关于这个的帖子,但我对 javascript 很陌生,所以我可以使用一些帮助。

我知道我必须使用:

<script>
window.onbeforeunload= function() { return "Custom message here"; };
</script>

但是如何使它与组合框一起使用?

点赞if cbOrderSpareCustomer.selectedIndex &gt; 0 then prompt else just continue.

我还想阻止它在每次回发时显示提示。

我想看一个例子。

【问题讨论】:

    标签: javascript asp.net onbeforeunload


    【解决方案1】:

    您在客户端获取下拉列表,并检查索引,您的代码可能如下:

    <script>
    window.onbeforeunload= function() 
        { 
            if(document.getElementById('<%=cbOrderSpareCustomer.ClientID%>').selectedIndex > 0)
            {
                return "Custom message here"; 
            }
            else
            {
                return true;
            }
        };
    </script>
    

    【讨论】:

      【解决方案2】:

      按照以下步骤进行操作

      1. 使用以下代码将onchange 属性添加到服务端的组合框: &lt;select id="cbOrderSpareCustomer" onchange="setDirty()"&gt;
      2. 如下定义你的 javascript

        var isDirty = true;
        function setDirty() { isDirty = true; } window.onbeforeunload = function () { if (isDirty) { return confirm('Your unsaved changes will be lost'); } }

      【讨论】:

      • 你让我朝着正确的方向前进。我的解决方案: function setDirty() { window.onbeforeunload = function () { return '如果你离开这个页面,数据将会丢失!' } }
      【解决方案3】:

      我觉得……

      window.onbeforeunload = function(e) {
          if (document.getElementById('cbOrderSpareCustomer').selectedIndex > 0) {
              if (!confirm('Are you sure')) {
                  return false;
              }
          }
      }
      

      【讨论】:

      • 在asp.net中,客户端ID渲染不一样,确认返回true/false,不需要额外返回,在这种情况下不需要,你只需返回字符串并且浏览器会向您提出更好的问题(离开或离开页面,而不是是/否)。 (我不会在答案中添加 -1 作为竞争对手)
      【解决方案4】:

      如果你使用的是 JQuery

      <script type="text/javascript">
          $(window).bind('beforeunload', function () {
              if ($("select[name='cbOrderSpareCustomer'] option:selected").index() > 0) {
                  return 'Your data will be lost.';
              }
          });
      </script>
      

      你不希望 else 返回 true 否则它仍然会提示(至少,IE 提示)

      【讨论】:

        【解决方案5】:

        我的解决方案:

        <script type="text/javascript"
        function setDirty() {
                    window.onbeforeunload = function () {
                        return 'The data will be lost if you leave this page!'
                    }
                }
        </script>
        

        将属性 onCange="setDirty()" 添加到下拉列表中。

        感谢大家的帮助!

        【讨论】:

          猜你喜欢
          • 2010-10-20
          • 1970-01-01
          • 2014-11-07
          • 2019-10-01
          • 1970-01-01
          • 1970-01-01
          • 2013-01-26
          • 2012-05-03
          • 1970-01-01
          相关资源
          最近更新 更多