JQuery Mobile Validate след changePage

Използвам JQuery Mobile с формуляр, който променя страната на сървъра. Трябва да презаредя страницата, така че най-новият формуляр да бъде включен на страницата. Формулярът също се нуждае от валидиране.

Мога да накарам валидирането да работи веднъж, но веднъж до изпращане. Страницата се обновява успешно и формулярът се появява, но проверката е изчезнала и ако изпратя, се извършва стандартно подаване вместо страница за промяна.

Изглежда, че 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="/bg//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