jQuery Mobile - Фильтрация списка просмотра флажков приводит к появлению неустановленных флажков
Долгое время читатель и первый постер здесь, несколько новый для 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 ответа
Это поведение является ошибкой в 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/
На самом деле, вам просто нужно добавить data-filter-reve ="true" в набор полей. Не нужно использовать CSS.
jQM создает свой собственный стилизованный флажок, но сохраняет оригинальный элемент INPUT в DOM. Это раскрывается, когда вы фильтруете. Следующий CSS скрывает эти элементы:
li .ui-checkbox input{
visibility: hidden;
}
Вот ваша обновленная скрипка: http://jsfiddle.net/ezanker/KsRb2/4/