jQuery Mobile - 过滤Checkbox的Listview会导致出现无样式的复选框

时间:2013-12-06 19:54:41

标签: javascript jquery jquery-mobile checkbox jquery-mobile-listview

这里有长时间的读者和第一次海报,对jQuery / jQM来说有点新鲜。

我有一个包含带有数据过滤器的Listview的表单,其中每个列表项都包含一个复选框。当我输入过滤器框并过滤项目时,后台会出现额外的无样式复选框。以下是代码示例:

<div data-role="content">  
    <ul data-role="listview">
        <fieldset data-role="controlgroup" id="myGroup" data-filter="true" data-icon="false">                
            <li>
                <input type="checkbox" 
                name="itemIds" 
                id="228"/>   
                <label for="228">
                    Orange
                </label>
            </li>   
            <li>
                <input type="checkbox" 
                name="itemIds" 
                id="70"/>   
                <label for="70">
                    Red
                </label>
            </li>    
            <li>
                <input type="checkbox" 
                name="itemIds" 
                id="71"/>   
                <label for="71">
                    Blue
                </label>
            </li>                

            <li>
                <input type="checkbox" 
                name="itemIds" 
                id="72"/>   
                <label for="72">
                    Purple
                </label>
            </li>                  
        </fieldset>
    </ul>
</div>

我最初认为问题在于我动态生成列表的方式(即我认为我必须得到重复的复选框,因为没有样式的复选框对应于我的列表中的项目),但我能够重现问题在jsfiddle中使用上面的简单代码示例:http://jsfiddle.net/KsRb2/2/

非常感谢任何帮助。谢谢!

3 个答案:

答案 0 :(得分:1)

此行为是jQM 1.4.0 alpha 2中的一个错误。您应该更新到1.4.0 RC1并删除ul和li标记,因为此列表应该只是列表视图或控制组,它不能同时存在。这将是最终的HTML:

<div data-role="content">  
    <fieldset data-role="controlgroup" id="myGroup" data-filter="true" data-icon="false">                
        <input type="checkbox" 
            name="itemIds" 
            id="228"/>   
        <label for="228">
            Orange
        </label>
        <input type="checkbox" 
            name="itemIds" 
            id="70"/>   
        <label for="70">
            Red
        </label>
        <input type="checkbox" 
            name="itemIds" 
            id="71"/>   
        <label for="71">
            Blue
        </label>

        <input type="checkbox" 
            name="itemIds" 
            id="72"/>   
        <label for="72">
            Purple
        </label>
    </fieldset>
</div>

你可以在这里用小提琴试试:http://jsfiddle.net/KsRb2/5/

答案 1 :(得分:0)

jQM正在创建自己的样式复选框,但保留DOM中的原始INPUT元素。当您过滤时,这会显示出来。以下CSS隐藏了这些元素:

li .ui-checkbox input{
    visibility: hidden;
}

以下是您更新的小提琴: http://jsfiddle.net/ezanker/KsRb2/4/

答案 2 :(得分:0)

实际上,您只需要在fieldset中添加data-filter-reveal =“true”。无需使用CSS。