Задать вопрос
@AlexanderLyakh
Python

Почему при параметре атрибуте checked в checkbox при обновлении сайта форма не меняется?

<div id="insert" class="text-center">
                        <h3>Я здесь впервые <input type="checkbox" name="fluency" value="Yes" id="fluency"></h3> <!-- реализовать по аналогии <?php echo @$data['mail']; ?>-->
                        <br>
                        <button type="submit" value="1" class="btn btn-secondary" name="do_signup"><font>Отправить</font></button>
                     </div>
                  </div>
<!-- ------------------------------------------- form end---------------------------------------------- -->
               </form>
               <script>// made change form of registration when client touch checkbox
                            var state = true
                           function showMessage() {
                              if(state){
                                  state = false;
                                  alert( 'Пароль должен быть больше 6 символом и содержать только следующие символы: A-Z,a-z,0-9' );
                              }
                            }
                           var z=document.getElementById('content');
                           var q=document.getElementById('formtype');
                           $(document).ready(function()
                           {
                             $('#fluency').change(function()
                             {
                               if(this.checked==true)
                               {
                                    z.innerHTML='<div class="row"><div class="col-xs-6 text-center"><h3>Имя</h3><input placeholder="Введите свои данные" name="name"><h3>Фамилия</h3><input placeholder="Введите свои данные" name="surname"><h3>Класс</h3><input placeholder="Введите свои данные" name="class"></div><div class="col-xs-6 text-center"><h3>Почта</h3><input placeholder="Введите свои данные" name="mail"><h3>Пароль</h3><input type="password" name="password" onmouseover="showMessage();"><h3>Повтор пароля</h3><input type="password" name="password-correct"></div></div>';
                                    q.innerHTML = '<h2>Регистрация</h2>';
                               }
                               else {
                                   z.innerHTML='<div class="row"><div class="col-xs-12 text-center"><h3>Имя</h3><input placeholder="Введите свои данные" name="name"><h3>Почта</h3><input placeholder="Введите свои данные" name="mail"><h3>Пароль</h3><input type="password" name="password"></div> </div>';
                                   q.innerHTML = '<h2>Вход</h2>';
                               }
                             });
                           });
                </script>

Самое интересное, когда я снимаю отметку чекбокса и снова отмечаю чекбокс - всё работает. Как исправить это баг?
То есть при обновлении сайта получается следующая картина: чекбокс - отмечен, а форма неизменена (хотя должна бы измениться)
  • Вопрос задан
  • 99 просмотров
Подписаться 1 Простой Комментировать
Решения вопроса 1
zkrvndm
@zkrvndm
Архитектор решений
После загрузки страницы принудительно вызовите на вашем чекбоксе обработчик change. Это должно помочь:
<script type="text/javascript">
  $(function() {
    $('#fluency').trigger('change');
  });
</script>
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
Kozack
@Kozack Куратор тега JavaScript
Thinking about a11y
Браузер может сохранять состояние контроллов формы при перезагрузке страницы.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы
OfferCase Москва
от 400 000 ₽
ITK academy Нижний Новгород
от 80 000 до 120 000 ₽
Future Москва
от 50 000 до 70 000 ₽