如何从母版页中的控件调用 javascript 函数?

Posted

技术标签:

【中文标题】如何从母版页中的控件调用 javascript 函数?【英文标题】:How to call a javascript function from a control within a masterpage? 【发布时间】: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.

【问题讨论】:

【参考方案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 新手。

以上是关于如何从母版页中的控件调用 javascript 函数?的主要内容,如果未能解决你的问题,请参考以下文章

如何从母版页上的用户控件访问母版页中定义的数据集?

如何使母版页中 div 的高度在内容页中展开?

如何在母版页中调用jquery ui autocomplete以在内容页面中定义控件

asp.net 如何从具有嵌套母版页的内容页更改父母版页中的控件

母版页中的 webpart 控件

动态母版页,可访问两个母版中的变量