JQuery Mobile Проверка после изменения страницы

Я использую JQuery Mobile с формой, которая меняет сторону сервера. Мне нужно перезагрузить страницу, чтобы самая последняя форма была включена на страницу. Форма также нуждается в проверке.

Я могу заставить проверку работать один раз, но один раз до отправки. Страница успешно обновляется, и форма появляется, но проверка отсутствует, и если я отправляю, вместо changePage выполняется стандартная отправка.

On pageinit, кажется, срабатывает каждый раз. Я рвал на себе волосы на этом. Кажется, это должно быть так просто.

<?php //
   session_start();
   if (isset($_SESSION['mytest']))
      $_SESSION['mytest']++;
   else
      $_SESSION['mytest'] = 1;
    $s = $_SESSION['mytest'];
?>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title>mytestout</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no" />
<link rel="stylesheet" href="//code.jquery.com/mobile/1.4.0/jquery.mobile-1.4.0.min.css">
<script src="https://code.jquery.com/jquery-1.10.2.min.js"></script>
<script src="https://code.jquery.com/mobile/1.4.0/jquery.mobile-1.4.0.min.js">            </script>
<script src="https://ajax.aspnetcdn.com/ajax/jquery.validate/1.11.1/jquery.validate.js"></script>
<script src="https://ajax.aspnetcdn.com/ajax/jquery.validate/1.11.1/additional-methods.js"></script>
</head>
<body>
   <div data-role="page" data-theme='b' id="testit" >
     <div data-role="content" class="content" id="cart" style="margin-top: 25px; margin-left: 40px">

       <p> counting  session var = <?=$s?> </p>

         <form id="myform">
           <input type="text" name="myname">
           <input type="submit">
         </form>

     </div>
   </div>


<script>

function submitme(e) {
   $.mobile.changePage( "#testit", { transition: "slideup", changeHash: false, reloadPage: true, allowSamePageTransition: true });
}


$(document).on('pageinit', function(){ //

$("#myform").validate( {
      rules: {
       myname: "required"
       }
   ,submitHandler: function(e) { submitme(e);}
 });
});
</script>
</body>
</html>

person user2449470    schedule 05.02.2014    source источник


Ответы (1)


Проблема здесь заключается в событии pageinit, которое запускается только один раз для каждой страницы (оно также устарело). Вам нужно будет использовать событие pagecontainershow, которое запускается каждый раз, когда отображается страница. . Это должно снова инициализировать проверку формы, заставляя ее работать каждый раз, когда она отображается. Обратите внимание, что я еще не тестировал это решение.

person Jörn Zaefferer    schedule 05.02.2014