2012-06-28 2 views
0

각 양식을 한 번 제출 한 후 내 페이지의 양식이 사라지는 상황이 있습니다. 예를 들어, 로그인 프롬프트에서 사용자 이름과 암호로 (Jquery Mobile 사용) 대화 상자가 정상적으로 표시되고 입력이 처리 및 유효성 확인되면 로그인 성공시 기본 페이지가 표시됩니다. 그러나 로그 오프 한 다음 다시 로그인하려고하면 페이지 머리글 만 표시됩니다. 입력 필드와 레이블이 없습니다.제출 후 Jquery 양식이 사라짐

하나의 입력 필드가 있고 텍스트가 입력되고 $ .post 호출이 만들어지고 HTML이 반환되며 $ ('# results')을 사용하여 결과가 업데이트되는 다른 페이지가 있습니다. .html (dataReceived) 함수 호출.

결과가 표시되면 양식이 사라지는 것 같습니다. 다음은 페이지 텍스트입니다.

<div data-role="page" id="Search" data-title="Search"> 
<div data-role="header" data-theme="e"> 
<h1>Search</h1>     
</div> 
<div data-role="content">     
<form name="SearchForm" action="search.php"> 
SSN: <input type=number name="snum" size="9" value=""><br> 
<input id="SearchButton" type="submit" value="Begin Search" data-inline="true"> 
</form> 
<div id=SearchResults></div> 
</div><!-- /content --> 
</div><!-- /Search --> 

양식의 제출 이벤트를 가로 채어 다른 곳에서 처리합니다. AJAX 호출 .post $의 콜백 기능에 사업부의 내용을 설정하는 코드는 다음과 같습니다

$('#SearchResults').html(dataReceived); 

일반 정보 : JQuery와 및 JQuery와 모바일의 가장 최근의 안정 버전. 이것은 다중 페이지 파일입니다. 외부 페이지가 호출되지 않습니다. 모든 것은 $ .post 호출로 끝납니다. 로그인 폼은 HTML을 업데이트하지 않고 단순히 사용자의 ID를 받아 변수에 저장합니다.

도움을 주시면 감사하겠습니다. Google은 내 친구가 아니 었습니다. "

thisForm.hide(); 

"loginForm "당신이 전화하는 쇼 (용) 만에 대한 :

$(document).ready(function() { 
     $('form').submit(function(event) { 
       event.preventDefault(); 
       var thisForm=$(this); 
       var formUrl=thisForm.attr('action'); 
       var formName=thisForm.attr('name'); 
       var dataToSend=thisForm.serialize(); 
       var callBack=function(dataReceived) { 
         thisForm.hide(); 
         switch(formName) { 
          case 'loginForm': 
          if (dataReceived.length>0 && parseInt(dataReceived)>0) { 
            loggingIn=0; 
            userId=parseInt(dataReceived); 
            $.mobile.changePage("#home"); 
            break; 
          } 
          thisForm.show(); 
          break; 

          case 'SearchForm': 
            $('#SearchResults').html(dataReceived); 
            break; 
         } 
       }; 
       dataToSend += '&seid=' + SESSID; 
       var rtnType="html"; 
       switch(formName) { 
         case "loginForm": 
           rtnType="text"; 
           break; 
         case 'SearchForm': 
           break; 
       } 
       $.post(formUrl,dataToSend,callBack,rtnType); 
       return false; 
     }); 
+0

: SearchForm "폼에 표시()를 호출하지 않습니다 . 즉, 로그인 변수를 저장하는 코드를 살펴 보겠습니다. –

+0

나는 응답을 처리하고 userId를 설정하는 코드를 보여주기 위해 질문을 수정했다. – mlewis54

답변

1

당신은 제출 콜백 함수에서 양식에 숨어있다 :

는 양식 제출 코드를 보여 개정 좀 JQuery와 그 범인이 될 수없는 있다고 생각

  var callBack=function(dataReceived) { 
        thisForm.hide(); 
        switch(formName) { 
         case 'loginForm': 
          if (dataReceived.length>0 && parseInt(dataReceived)>0) { 
           loggingIn=0; 
           userId=parseInt(dataReceived); 
           $.mobile.changePage("#home"); 
           break; 
          } 
          thisForm.show(); 
          break; 
         case 'SearchForm': 
          $('#SearchResults').html(dataReceived); 
          break; 
        } 
      }; 
+0

Duh! 고맙습니다. Jquery 모바일을 처음 접했고 로그인 오류가 발생했을 때 양식을 보여주고 있다는 것을 잊어 버렸습니다. 어느 시점에서 다시 게시해야한다는 것을 완전히 잊어 버렸습니다. 변화를 만들었고 모두 좋았습니다. – mlewis54

관련 문제