第二次显示表单复选框未正确显示

时间:2011-05-02 13:56:40

标签: jquery-mobile jquery-templates knockout.js

我有一个带有复选框的简单表单的奇怪问题..

第一次显示它看起来很好..但是在导航回到上一页并再次访问之后 - ui不是更新,导致没有jQuery移动样式的普通复选框..

我用Google搜索过疯狂,发现了一些像.fieldcontain();但它不起作用=(

通过敲除绑定检索数据..

有什么好主意吗?

这是代码......

<div id="searchCitiesPage" data-role="page" data-theme="a" class="page searchCities"> 
<header data-role="header" data-theme="b">
</header>
<div data-role="content" class="content" data-theme="a">  
    <script id="countyListTemplate" type="x-jquery-tmpl">
        <form id="fieldform" action="form.php" method="post">
            <fieldset id="fieldsetgroup" data-role="controlgroup">

                {{each BoligPortal.AdSearch.postalcodesInSelectedCounty}}
                    <input type="checkbox" name="checkbox-${zipcode}-${timestamp}" id="checkbox-${zipcode}-${timestamp}" class="zipcodecheckbox"/>
                    <label for="checkbox-${zipcode}-${timestamp}">${zipcode} ${city}</label>
                {{/each}}
            </fieldset>
        </form>
    </script>

    <div data-bind="template: 'countyListTemplate'"></div> 

    <div class="submit">
        <a href="#searchCriteriasPage" class="navbutton submitPostnumre">Næste</a>
    </div>
</div>

3 个答案:

答案 0 :(得分:1)

我也有这样的问题,但在我的情况下,复选框在加载页面之前被动态重绘。我尝试过刷新:

$("input[type='checkbox']").checkboxradio("refresh");

但它给了我一个错误,说明checkboxradio尚未初始化。但是,当我尝试这样做时:

$("input[type='checkbox']").checkboxradio();

每次都使复选框显示正确。我仍然在与JQuery Mobile的黑暗中摸索,并且不能确切地说出在哪里和为什么会发生什么(我想我正在初始化复选框?),但我想我会分享下一次像我这样的人谷歌搜索他们的方式这个帖子。

答案 1 :(得分:0)

您可以添加一些javascript来重新初始化每个页面加载时复选框的jQuery Mobile标记。像这样:

<script type="text/javascript">
    $(function() {
        $('[data-role=page]').live('pageshow',function(){ 
            $('#fieldform').find('input').checkboxradio();
        });
    });
</script>

答案 2 :(得分:0)

我怀疑这段代码

{{each BoligPortal.AdSearch.postalcodesInSelectedCounty}}
    <input type="checkbox" name="checkbox-${zipcode}-${timestamp}" id="checkbox-${zipcode}-${timestamp}" class="zipcodecheckbox"/>
    <label for="checkbox-${zipcode}-${timestamp}">${zipcode} ${city}</label>
{{/each}}
当您转换回页面时,再次调用

。我建议在页面显示之前(在第一次加载时)拉出infomation / tags / etc.并静态显示它。因此,当向后转换时,它会显示相同的数据。

你可以使用其中一个直播活动,并在页面显示之前重新设置它,例如:

$('.zipcodecheckbox').live('pagebeforeshow',function(event, ui){
    $("input[type='checkbox']").checkboxradio("refresh");
    // or
    $(".zipcodecheckbox").checkboxradio("refresh");
});