2014-02-20 1 views
0

사용자가 암호를 입력하는 jQuery를 사용하여 내 페이지에 모달 대화 상자가 있습니다.jQuery 모달 대화 상자 및 ASP.NET 다시 게시

표준 jQuery 대화 상자이며 정상적으로 작동합니다. 내가 선택적 대한 다시 게시를 해고하려면, 문제는 페이지에 나중에입니다

 $('.needsVal').click(function() { 
      $("#login1").dialog('open'); 
      id = $(this).attr('id'); 
      return false; 
     }); 

내가 Ajax 호출을하고, 값에 따라 반환 :이 코드를 사용하여 대화 상자를 열고 데이터 그리드에서 linkbuttons이 그 페이지. 문제는 포스트 백이 발생하지 않는다는 것입니다. 내가 다시 게시가 모달 대화 상자가 동작하지 않습니다 어떤 이유

 if (returnValue == "true") { 
      WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions(id, "", false, "", "", false, true)); 
      return true; 
     } 
     else { 
      alert("Authentication failure!\nPlease check your password and try again."); 
      return false; 

, 그리고 그것은 나를 미치게있어 다음과 같이 내 게시 코드입니다. 나는이 작업을 일반적인 Javascript 프롬프트에서 수행했지만 프롬프트에서 비밀번호를 숨길 방법이 없기 때문에이를 변경해야했습니다.

포스트 백을 작동시키는 방법에 대한 의견이 있으십니까?

id는 클릭 한 버튼의 고유 ID를 갖는 전역 변수입니다. 그게 제대로 통과되고 있다는 것을 확인했습니다.

+0

'PostBack' 이벤트를 캡처하려면'appendTo' 매개 변수를 추가해야한다고 생각합니다. – rommel

+0

실제로 인증 루틴을 실행할 수는 있지만 반환하지만 WebForm_PostBackOptions에 대한 호출이 작동하지 않습니다. 예를 들어, $ ("# login1"). 그것은 다시 게시하지 않습니다 ... 내가 정상적인 프롬프트로 이것을하고 있었을 때, 프롬프트가 루틴이 완료 될 때까지 제출을 막을 것이기 때문에 정상적으로 작동했습니다. 지금은 항상 내 업데이트를하거나 내 업데이트를하지 않습니다 ... – Tim

답변

0

나는 이것을 작동시킬 수 있었다.

페이지에서 두 개의 ASP.NET 컨트롤 (두 개의 gridviews, 하나는 일반 linkbuttons, 다른 하나는 linkColumn)이 발견되었습니다.

두 가지 유형의 컨트롤 (linkbutton 대 commandbutton)에서 linkbutton이 작동하는 방식 때문에 폼을 여는 방법과 프롬프트와 상호 작용하는 방법을 다양하게해야했습니다. 두 가지 다른 사건을 만들어야했습니다. (어쩌면 하나 그것을 할 수있는 방법이 있습니다,하지만 난 그것을 밖으로 이해할 수 없었다) 마침내 현명한 jQuery를 함께 상처 무엇

:

//Click event for gridview 1 (standard linkbutton) 
$('.needsVal').click(function() { 
       $("#login1").dialog('open'); 
       id = $(this).attr('id'); 
       return false; 
      }); 

//Click event for second gridview (command button) 
      $('.needsValSideMenu').click(function() { 
       var h = $(this).html(); 
       script = h.substring(h.indexOf("\"") + 1, h.indexOf("\">")); 
       $("#login2").dialog('open'); 
       return false; 
      }); 

//AJAX call for standard linkbutton grid 
function checkPassword() { 
      var returnValue; 
      $.ajax({ 
       async: false, 
       type: "POST", 
       url: "myservice.asmx/Authenticate", 
       data: { "password": pw.value }, 
       dataType: "xml", 
       error: function() { alert("Unexpected Error!"); }, 
       success: function (msg) { 
        returnValue = $(msg).find('boolean').text() 
       } 
      }); 
      if (returnValue == "true") { 
       //alert(id.replace("_", "$")); 
       id = id.split("_").join("$");     
       WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions(id.replace("_","$"), "", true, "", "", false, true)); 
      } 
      else { 
       alert("Authentication failure!\nPlease check your password and try again."); 
      } 
     } 

//Call for second grid (command button) - need to get and execute the script associated with this button 
     function checkPasswordSideMenu() { 
      var returnValue; 
      $.ajax({ 
       async: false, 
       type: "POST", 
       url: "myservice.asmx/Authenticate", 
       data: { "password": pw2.value }, 
       dataType: "xml", 
       error: function() { alert("Unexpected Error!"); }, 
       success: function (msg) { 
        returnValue = $(msg).find('boolean').text() 
       } 
      }); 
      if (returnValue == "true") { 
       eval(script); 
      } 
      else { 
       alert("Authentication failure!\nPlease check your password and try again."); 
      } 
     } 

내가 할 수있는 방법을 생각하지 못했습니다 어떤 버튼 유형을 클릭했는지에 따라 다른 checkPassword 루틴을 호출해야하므로이 방법을 사용하십시오.

관련 문제