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

时间:2009-03-20 18:38:37

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

我有一个带有登录控件的母版页。单击“登录”按钮时,如果用户的成员资格即将在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.
}

3 个答案:

答案 0 :(得分:2)

怎么样?

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

答案 1 :(得分:0)

为什么不总是在单击按钮时调用jquery方法,然后在javascript方法中确定是否要显示对话框?如果没有,就不要做任何事情。由于您只是检查ExpirationDate是否小于现在+ 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.

上找到一些文档

答案 2 :(得分:0)

如果你说你点击一个asp:按钮时出现了这个jQuery对话框,为什么不隐藏按钮并将你的javascript更改为只在页面加载后按下按钮?