Диалог появляется при каждом обновлении - PullRequest
0 голосов
/ 17 мая 2018

Мне нужно создать диалог на моем сайте входа. Проблема в том, что он появляется каждый раз, и я не могу закрыть его (нажмите на кнопку, чтобы обновить сайт, и снова появится диалоговое окно). Я также знаю, что знаю причину, но я могу это исправить.

Это мой диалог

<p:dialog id="ac-wrapper" widgetVar="test" style='display: none; background:white;' modal="true"
                resizable="false" closeOnEscape="true" closable="true" visible="true">
                <div id="popup">    
                    <h2>Some Content</h2>
                        <input type="submit" name="submit" value="Submit"
                                onclick="DialogBox('hide')" />
                </div>
            </p:dialog>

Вот javascript, который должен обрабатывать это:

 <script type="text/javascript">

            $ = jQuery;
            function DialogBox(hideOrshow) {

                if (hideOrshow == 'hide') {
                    localStorage.setItem("isShown",1);
                    document.getElementById('ac-wrapper').style.display = "none";
                    document.getElementById('ac-wrapper').visible="false";
                    $("#ac-wrapper").close();
                }
                else  if(localStorage.getItem("isShown") == null) {
                    document.getElementById('ac-wrapper').removeAttribute('style');
                    localStorage.setItem("isShown",1);
                }
            }

            window.onload = function () {
                setTimeout(function () {
                    if(localStorage.getItem("isShown") != 1 ){
                        DialogBox('show');
                    }
                    else if(localStorage.getItem("isShown")){
                        $("#ac-wrapper").remove();
                    }}, 1000);
            }
            </script> 

При рендеринге сайта диалоговое окно всегда появляется, потому что атрибут visible имеет значение true. Я думаю, порядок неверный. Он должен проверить локальное хранилище, а затем отобразить элементы, я не могу заставить его работать правильно. Я также искал ответы здесь с похожими проблемами, но ничего не помогло.

1 Ответ

0 голосов
/ 17 мая 2018

Проблема заключается в следующем:

 <input type="submit" name="submit" value="Submit"
                            onclick="DialogBox('hide')" />

, потому что это тип ввода submit, по умолчанию он соответствует поведению формы ... который должен перенаправлять на тот же URL-адрес, используя GET.Измените тип и значение на «кнопка» и «закрыть», и ваша проблема будет решена

...