0

我想要实现的是一个在 div 中有几个按钮的页面。当用户按下其中一个按钮时,会打开一个对话框,询问后续问题。在此之后,用户返回到同一页面,但带有按钮的 div 被隐藏。

我尝试过的是以下内容,在 JQM 页面中,我有一个名为按钮的 div,其中包含按钮(逻辑上)。这将打开对话框并调用一个函数,该函数将按下哪个按钮保存到本地存储中。然后打开对话框,实际上将数据发送到服务器。

由于某种原因,当我从对话框返回时,div 永远不会隐藏。我什至尝试将变量保存到 sessionStorage 并在页面加载时隐藏 div,但似乎从对话框返回时页面加载事件不会触发。有什么建议还是我错过了一些基本的东西?

<div class="ui-grid-b" id="buttons">
    <div class="ui-block-a"><a  href="#Popup" data-rel="dialog" onclick="savePushedButton('green')"></a></div>
    <div class="ui-block-b"><a  href="#Popup" data-rel="dialog" onclick="savePushedButton('yellow')"></a></div>
    <div class="ui-block-c"><a  href="#Popup" data-rel="dialog" onclick="savePushedButton('red')"></a></div>
</div><!-- /grid-b -->

// the dialog: 
<div data-role="dialog" id="Popup" data-overlay-theme="b" data-theme="a" class="ui-corner-all">
        <form>
            <div style="padding:10px 20px;">
              <h3>Heading</h3>
              <textarea name="comments" id="popuptextarea"></textarea>
              <button type="submit" data-theme="b" onClick="save()">Selv&auml;</button>
            </div>
        </form>
</div>

我有两个 javascript 函数,它们试图保存数据并隐藏 div,

function savePushedButton(color) {
    //save which button was pressed to local storage
    $('#buttons').hide();
    console.log("asd");

}
function save() {
//send data to server
}
4

1 回答 1

0

onclick是你的问题(onchange也是),不要将它与 jQuery Mobile 一起使用。在触发onclick之前,jQuery Mobile 已经开始转换到对话框。您需要手动将单击事件绑定到按钮并隐藏按钮,然后才能转换为对话框。

这是一个工作示例:http: //jsfiddle.net/Gajotres/uhsfs/

$(document).on('pagebeforeshow', '#index', function(){       
    $(document).on('click', '#test-button', function(){     
        $('#buttons').hide();
        savePushedButton($(this).attr('data-color'));
    });
});

function savePushedButton(color) {
    console.log(color);
    $.mobile.changePage('#Popup', {transition: 'pop', role: 'dialog'}); 
}
于 2013-02-12T13:12:24.413 回答