Модальная коробка + флажок + печенье - PullRequest
2 голосов
/ 22 октября 2009

Я хотел бы добиться следующего:

  • При загрузке домашней страницы, отображать модальное поле
  • В модальном поле отобразить форму с одним обязательным флажком
  • Установив флажок, нажмите «Отправить» и закройте модальное поле, перейдите на домашнюю страницу
  • Запомните этот флажок, используя cookie
  • В случае возврата пользователей на домашнюю страницу, если они установили флажок, модальное поле не будет отображаться

Я где-то получал это:

http://dev.iceburg.net/jquery/jqModal

Таким образом, я могу получить модальное окно, отображаемое при загрузке страницы, но я не могу понять, как заставить форму сделать флажок обязательным и закрыть окно. Я также не знаю, с чего начать при установке файла cookie.

Любые указатели приветствуются.

Спасибо

РЕДАКТИРОВАТЬ: включить код:

Index.html - для отображения модального поля при загрузке страницы

$().ready(function() {
  $('#ex2').jqm({modal: 'true', ajax: '2.html', trigger: 'a.ex2trigger' });

    setTimeout($('#ex2').jqmShow(),2000); 

});

2.html - содержимое модального ящика, загружаемое через ajax

function validate(frm) {
        if (frm.checkbox.checked==false)
    {
        alert("Please agree to our Terms and Conditions.");
        return false;
    }
}


<form action="" method="POST" onSubmit="return validate(form);" name="form">
<input type="checkbox" name="checkbox" id="checkbox" value="1">&nbsp;I hereby agree to all Terms and Conditions</a>
<input type="submit" value="Submit">
</form>

Ответы [ 3 ]

2 голосов
/ 22 октября 2009

Загрузите плагин cookie jquery, чтобы разрешить устанавливать / читать куки: http://plugins.jquery.com/project/cookie тогда .. как то так ниже. Не проверено, но вы поняли

index.html:

$().ready(function() {
    if (!$.cookie('agreed_to_terms'))
    {
        $('#ex2').jqm({modal: 'true', ajax: '2.html', trigger: 'a.ex2trigger' });
        $('#ex2').jqmShow();    
    }
});

2.html:

$().ready(function()
{
    $('#agreeFrm').submit(function(e)
    {
        e.preventDefault();

        if ($(this).find('input[name=checkbox]').is(':checked'))
        {
            $.cookie('agreed_to_terms', '1', { path: '/', expires: 999999 });
            $('#ex2').jqmHide(); 
        }
    });
});

<form id="agreeFrm" action="" method="POST" name="form">
<input type="checkbox" name="checkbox" id="checkbox" value="1">&nbsp;I hereby agree to all Terms and Conditions</a>
<input type="submit" value="Submit">
</form>
1 голос
/ 30 января 2012

Наконец-то работает! Я пропускал обратный вызов, когда файл cookie существует, и эти тики '' вокруг значения файла cookie. Вот как это выглядит. Пожалуйста, дайте мне знать, если есть какая-то очевидная ошибка. (большое спасибо за вашу поддержку)

function confirm(msg,callback) {
  $('#confirm')
    .jqmShow()
    .find('p.jqmConfirmMsg')
      .html(msg)
    .end()
    .find(':submit:visible')
      .click(function(){
        if(this.value == 'Proceed'){
           $.cookie("agreed_to_terms", '1', { expires : 1, path: '/' }); //set cookie, expires in 365 days
           (typeof callback == 'string') ?
            window.location.href = callback :
            callback();
        }
        $('#confirm').jqmHide();
      });
}


$().ready(function() {
  $('#confirm').jqm({overlay: 88, modal: 'true', trigger: false});

  // trigger a confirm whenever links of class alert are pressed.
  $('a.confirm').click(function() { 
    if ($.cookie('agreed_to_terms') == '1'){window.location.href = callback =
            callback()
       //they already have cookie set
    }else{
       confirm('About to visit: '+this.href+' !',this.href); 
    }
    return false;
  });
});// JavaScript Document
1 голос
/ 22 октября 2009

Я недавно использовал плагин JQuery под названием SimpleModal

Я был очень впечатлен тем, как легко это было. На модале у меня было несколько флажков, чтобы перенести значения флажков обратно на страницу, на которой был включен модал после нажатия кнопки отправки.

Вся информация и демонстрационные материалы находятся на домашней странице SimpleModal

...