Динамическое изменение значения input checkbox(JQUERY MOBILE)
Всем привет!
Кто подскажет как динамически изменять значение checkbox(JQUERY MOBILE), например, по событию из сети? <fieldset data-role="controlgroup" id="timer_t_ur"> <legend>Интервалы работы долива по таймеру</legend> <div data-role="fieldcontain"> <label for="s_16463">(16463) Активация:</label> <input type="checkbox" name="s_16463" onclick="writeCheckbox(this);" id="s_16463"> </div> </fieldset> Что-то типа такого не прокатывает: ///////////////Обновляем Checkbox///////////////////////////// $("#s_16463").attr("checked", (checkboxRegisters['c16463'] == 'true') ? true : false); Заранее спасибо! |
Цитата:
<fieldset data-role="controlgroup" id="timer_t_ur"> <legend>Интервалы работы долива по таймеру</legend> <div data-role="fieldcontain"> <label for="s_16463">(16463) Активация:</label> <input type="checkbox" name="s_16463" id="s_16463"> </div> </fieldset> <script type='text/javascript'> document.getElementById('s_16463').checked=true; </script> |
Этот вариант отрабатывает 1 раз только после обновления страницы.
|
<fieldset data-role="controlgroup" id="timer_t_ur"> <legend>Интервалы работы долива по таймеру</legend> <div data-role="fieldcontain"> <label for="s_16463">(16463) Активация:</label> <input type="checkbox" name="s_16463" onclick="writeCheckbox(this);" id="s_16463"> </div> </fieldset> <script src='https://code.jquery.com/jquery-latest.js'></script> <script> var checkboxRegisters = {c16463: true}; $("#s_16463").attr("checked", checkboxRegisters['c16463']); </script> Скрипт должен находиться в обработчике какого-то события, которое меняет checkboxRegisters['c16463'] |
Это примерно тоже, что и у меня, здесь http://demos.jquerymobile.com/1.1.2/...s/methods.html пишут, что после записи нужно делать "refresh", но почему-то в браузере вылазит ошибка:"Error: cannot call methods on checkboxradio prior to initialization; attempted to call method 'refresh'"
|
Цитата:
|
Прикол в том, что элемент checkbox не обновляется автоматически при таком подходе, только, если в ручную не перезагрузить страницу, т.е. нужно его каким то образом "встряхнуть" сделать refresh, возможно это такие особенности JQUERY MOBILE, вот в данный момент и ищу как это сделать.
|
Цитата:
<fieldset data-role="controlgroup" id="timer_t_ur"> <legend>Интервалы работы долива по таймеру</legend> <div data-role="fieldcontain"> <label for="s_16463">(16463) Активация:</label> <input type="checkbox" name="s_16463" onclick="writeCheckbox(this);" id="s_16463"> </div> </fieldset> <script src='https://code.jquery.com/jquery-latest.js'></script> <script> var checkboxRegisters = {c16463: true}; $("#s_16463").attr("checked", (checkboxRegisters['c16463'] == 'true') ? true : false); </script> - не работает, а мой (пост #4) работает |
А в цикле работает вариант с prop вместо attr
<fieldset data-role="controlgroup" id="timer_t_ur"> <legend>Интервалы работы долива по таймеру</legend> <div data-role="fieldcontain"> <label for="s_16463">(16463) Активация:</label> <input type="checkbox" name="s_16463" onclick="writeCheckbox(this);" id="s_16463"> </div> </fieldset> <script src='https://code.jquery.com/jquery-latest.js'></script> <script> var checkboxRegisters = {c16463: false}; var loop = setTimeout (function tick() { checkboxRegisters['c16463'] = !checkboxRegisters['c16463']; $("#s_16463").prop("checked", checkboxRegisters['c16463']); loop = setTimeout(tick, 2000); }, 2000); </script> |
Согласен, что так работает, но только ни в JQUERY MOBILE.
|
Ваще без jQuery
<fieldset data-role="controlgroup" id="timer_t_ur"> <legend>Интервалы работы долива по таймеру</legend> <div data-role="fieldcontain"> <label for="s_16463">(16463) Активация:</label> <input type="checkbox" name="s_16463" onclick="writeCheckbox(this);" id="s_16463"> </div> </fieldset> <script> var checkboxRegisters = {c16463: false}; var elem = document.querySelector("#s_16463"); var loop = setTimeout (function tick() { checkboxRegisters['c16463'] = !checkboxRegisters['c16463']; checkboxRegisters['c16463'] ? elem.setAttribute("checked", "checked") : elem.removeAttribute("checked"); loop = setTimeout(tick, 2000); }, 2000); </script> |
Часовой пояс GMT +3, время: 03:38. |