【问题标题】:How to call a javascript function from a control within a masterpage?如何从母版页中的控件调用 javascript 函数?
【发布时间】:2010-10-14 14:56:49
【问题描述】:

我有一个带有登录控件的母版页。单击登录按钮时,如果用户的会员资格将在 30 天内到期,我希望弹出一个 JQuery 对话框,否则它将正常登录。我不知道该怎么做。我将发布部分代码:

这里是javascript:

<script type="text/javascript">
    function showjQueryDialog() {
        $("#dialog").dialog("open");
    }

    $(document).ready(function() {
        $("#dialog").dialog({
            autoOpen: false,
            modal: true,
            buttons: { "Renew Membership": function() 
                     { $(this).dialog("close"); } }
        });
    });
</script>

登录按钮称为 ibtnLoginButton,下面是部分代码:

//Grab the user profile.
UserProfiles userProfile = 
             UserProfiles.GetUserProfiles(txtUserName1.Text);

//Calculate the Time Span
TimeSpan timeSpan = userProfile.Expiration.Subtract(DateTime.Now);

if (timeSpan.Days < 30)
{
 //Show JQuery Dialog Here
}
else
{
  //Continue with Login Process.
}

【问题讨论】:

    标签: c# asp.net jquery jquery-ui


    【解决方案1】:

    这个怎么样?

    if (timeSpan.Days < 30)
    {
     //Show JQuery Dialog Here
    ScriptManager.RegisterClientScriptBlock(this, typeof(Page), "showExpiration", "showjQueryDialog()", true);
    }
    

    【讨论】:

    • 好的,我试过了,它显示了对话框 div 中的文本,但对话框没有弹出。
    • 尝试将 Javascript 函数 showJQueryDialog() 更改为: function showJQueryDialog(){ alert('Time to renew members!'); } 或类似的东西。这会满足您的需求吗?
    • 一旦你开始工作,你可以尝试让一个漂亮的 JQuery 模态对话框看起来像这样:ericmmartin.com/projects/simplemodal
    • 好的,警报有效,但我的问题是现在对话框没有显示。它只是在页面上显示 div 的内容,而不是弹出 JQuery 对话框
    • 这涉及到一个我不太熟悉的 JQuery 调试问题。您是否指向 JQuery UI Dialog 脚本?我相信你也需要在 JQuery 库中指出这一点。
    【解决方案2】:

    如果,正如您所说,当单击 asp:Button 时出现此 jQuery 对话框,为什么不隐藏按钮并将您的 javascript 更改为在页面加载后仅按下按钮?

    【讨论】:

      【解决方案3】:

      为什么不总是在单击按钮时调用 jquery 方法,然后在 javascript 方法中确定是否要显示对话框?如果没有,就什么也不做。由于您只是在检查 ExpirationDate 是否小于 now + 30 天,因此您可以在 javascript 中进行该计算。

      编辑:

      我无法为您提供确切的解决方案,但这里有一些伪代码可以帮助您上路。

      首先在javascript中提供用户个人资料的到期日期:

      <script>
      var userProfileExpiresOn = "<asp:Literal ID="userProfileExpiresOn" />";
      </script>
      

      然后编辑您的方法,使其执行您当前在服务器端为您执行的逻辑:

      <script>
      function showjQueryDialog() {
        if (userProfileExpiresOn < (now + 30 days))
          $("#dialog").dialog("open");
      }
      </script>
      

      您可以在 how to work with dates in Javascript at W3schools. 上找到一些文档

      【讨论】:

      • 你能举个例子吗?我是 javascript 新手。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-06-23
      • 1970-01-01
      • 2014-09-25
      • 2016-07-01
      相关资源
      最近更新 更多