Создание диалога JQuery Mobile

Я пытаюсь создать диалог с Jquery mobile. Я попытался сослаться на принятый ответ в этом вопросе SO, но у меня это не сработало.

Вот мой код:

 <div data-role="page" id="first"> 
    <!-- Code -->  
    <div id = "dialog" data-rel="dialog">
        <div id = "errorText"></div>
        <button id = "closeDialog">OK</button>
    </div>
</div>

И вот JS для этого (внутри функции):

//Nothing checked. Cannot continue. Add error message to div
$('#errorText').html("You must check the checkbox next to \"I Agree\" to continue");
//Open Dialog
$('#dialog').dialog();

При достижении кода для создания диалога ничего не происходит. Предложения?


person Stanley Cup Phil    schedule 23.05.2011    source источник


Ответы (5)


Диалог должен быть отдельным разделом страницы, который вы можете загрузить через Ajax или включить в свой HTML. Вот пример.

<!DOCTYPE html>
<html>
    <head>
    <title>Page Title</title>
    <link rel="stylesheet" href="http://code.jquery.com/mobile/1.0a4.1/jquery.mobile-1.0a4.1.min.css" />
    <script type="text/javascript" src="http://code.jquery.com/jquery-1.5.2.min.js"></script>
    <script type="text/javascript" src="http://code.jquery.com/mobile/1.0a4.1/jquery.mobile-1.0a4.1.min.js"></script>
</head>
<body>
<div data-role="page">
    <div data-role="header">
        <h1>Sample</h1>
    </div>
    <div data-role="content">
        <p></p>
        <p><a href="dialog.html" data-rel="dialog" data-role="button">Is this a question?</a></p>
    </div>
</div>
<div data-role="page" data-url="dialog.html">
    <div data-role="header">
        <h1>Dialog</h1>
    </div>
    <div data-role="content">
        <p>Is this an answer?</p>
    </div>
</div>
</body>
</html>
person Tim Niblett    schedule 24.05.2011

Это сработало для меня из раздела «Локальные внутренние связанные страницы» в http://jquerymobile.com/demos/1.0b1/#/demos/1.0b1/docs/pages/docs-pages..html

http://jsfiddle.net/homer2/ra7Hv/

<div data-role="page" id="foo">
    <div data-role="header">
        <h1>
            Foo
        </h1>
    </div><!-- /header -->
    <div data-role="content">
        <p>
            I'm first in the source order so I'm shown as the page.
        </p>
        <p>
            View internal page called <a href="#bar" data-rel="dialog">bar</a>
        </p>
    </div><!-- /content -->
    <div data-role="footer">
        <h4>
            Page Footer
        </h4>
    </div><!-- /footer -->
</div><!-- /page -->

<!-- Start of second page -->
<div data-role="page" id="bar">
    <div data-role="header">
        <h1>
            Bar
        </h1>
    </div><!-- /header -->
    <div data-role="content">
        <p>
            I'm second in the source order so I'm not shown as the page initally.
        </p>
        <p>
            <a href="#foo">Back to foo</a>
        </p>
    </div><!-- /content -->
    <div data-role="footer">
        <h4>
            Page Footer
        </h4>
    </div><!-- /footer -->
</div><!-- /page -->
person Homer    schedule 30.06.2011
comment
Если страница диалога встроена в тот же html-файл, что и главная страница, то вам необходимо использовать идентификатор диалога (в данном случае: #bar) в качестве href привязки кнопки. В противном случае, если вы используете URL-адрес, jQM попытается получить диалоговое окно с помощью AJAX, что потерпит неудачу, если диалоговое окно не содержится в файле, представленном этим URL-адресом. - person Philippe Monnet; 24.12.2011

Вы могли бы использовать

$('#errorText').html("You must check the checkbox next to \"I Agree\" to continue");
$.mobile.changePage('dialog', 'slide', false, false);

Дополнительные сведения см. на http://jquerymobile.com/demos/1.0b1pre/#/demos/1.0b1pre/docs/pages/docs-navmodel.html

person gsilvestrin    schedule 24.05.2011

Просто это,

<div data-role="popup" id="popupDialog" data-overlay-theme="a">
                Hello world
 </div>

 $('#popupDialog' ).popup('open');
person omeralper    schedule 31.08.2013

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

HTML код:

<div data-role="page" id="genericDialog">
    <div data-role="header" ><h3 id="genericDialogHeader"></h3></div>
    <div data-role="content" id="genericDialogContent"></div>
</div>

И JavaScript код:

function openDialog (title,body) {
    //Setting values
    $("#genericDialogHeader").html(title);
    $("#genericDialogContent").html(body);
    //Showing the generic dialog
    $.mobile.changePage( "#genericDialog", { role: "dialog" } );
}
person Leonardo Oliva    schedule 08.10.2016