2009-03-20 4 views
1

У меня есть мастер-страница с элементом управления Login. Когда нажата кнопка «Логин», я хотел бы, чтобы всплывающее окно JQuery появилось, если членство пользователя истекает в течение 30 дней, иначе он будет просто регистрировать их как обычно. Я не могу понять, как это сделать. Я WLL размещать части кода:Как вызвать функцию javascript из элемента управления в главной странице?

Вот 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. 
} 

ответ

2

как насчет этого?

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

Хорошо, я попробовал это, и он отображает текст, который находится в div для диалога, но диалог не появляется. – Xaisoft

+0

Попробуйте изменить функцию Javascript showJQueryDialog(): function showJQueryDialog() {alert ('Время продления членства!'); } или что-то типа того. Будет ли это соответствовать вашим потребностям? – SquidScareMe

+0

Как только вы получите эту работу, вы можете попробовать получить приятный текстовый диалог JQuery, чтобы он выглядел следующим образом: http://www.ericmmartin.com/projects/simplemodal/ – SquidScareMe

0

Почему не всегда вызывать JQuery метод, когда кнопка нажата, а затем определите внутри javascript-метод, хотите ли вы показать диалог? Если нет, просто ничего не делайте. Поскольку вы просто проверяете, будет ли ExpirationDate меньше, чем сейчас + 30 дней, вы можете сделать этот расчет просто отлично в javascript.

Edit:

Я не могу предоставить вам точное решение, но вот некоторые псевдокод, чтобы вы на своем пути.

Сначала сделайте дата окончания срока действия пользователя в профиле нужно доступны в 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.

+0

Можете ли вы привести пример? Я новичок в javascript. – Xaisoft

+0

Обновлен ответ с примером псевдокода. – Rahul

0

Если, как вы сказали, у вас есть этот диалог JQuery появляться при щелчке на жереха: Button, почему бы не просто скрыть кнопку и изменить JavaScript, чтобы просто нажать на кнопку после загрузки страницы ?

Смежные вопросы