2014-02-05 2 views
0

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

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

Кажется, что на странице появляется стрельба каждый раз. Я вытаскиваю свои волосы на этом. Похоже, это должно быть так просто.

<?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> 

ответ

0

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

Смежные вопросы