2010-01-26 5 views
1

asp.net (2.0) 페이지에 컨트롤이 내장되어 있습니다. 컨트롤이 페이지에있을 때 반환 키가 컨트롤의 동작을 실행하기 위해 누를 때 기본 동작을 원하지만 페이지의 동작은 필요하지 않습니다. 이 목적을 위해 나는 그 설정이 페이지의 버튼에 위대한 효과가 있다는 것을 발견했다.useubmitbehaviour가 false로 설정된 경우 두 개의 asp : button 컨트롤 팝업 창이 나타납니다.

UseSubmitBehaviour="false" 

페이지의이 버튼을 클릭 할 때 확인 창이 표시 될 때까지는 괜찮 았습니다. 버튼을 누르면 시스템에서 레코드를 영구히 삭제하고 올바른 버튼을 클릭하는지 확인하려고합니다. 버튼은 다음과 같습니다

<asp:Button runat="server" ID="btnDeleteCollationResultstop" Text="Delete Selected" UseSubmitBehavior="true" 
ToolTip="Delete all the selected items in the Collation tool" OnClick="btnDeleteCollationResults_Click" 
OnClientClick="return confirm('Are you sure you wish to Delete the selected Item(s)?');" /> 

팝업 확인 창이 내가 trueUseSubmitBehaviour를 설정하면 부하와 작업을 수행하지만 리턴 키 화재 삭제 버튼을 다시 정말 원하지 않는.

  • 확인에이 페이지를 내 컨트롤에 화재 리턴 키의

    1. 메이크업의 기본 동작하지 :

      그래서 제 질문은 내가 다음을 수행 할 얻을 수있는 방법이다 사용자가 삭제 버튼을 클릭하면 삭제 확인 메시지가 나타나면 확인 창이 나타납니다.

    감사

    편집

    한 일부 JQuery와의 난 그냥 버튼 중 어느 것도 반환에 다시 제출하지 않도록 그것을 확인하는 것입니다했다 아이디어와 후크 돌아 가기를 듣고 내가 원하는 버튼에 대한 제출을해라. (그것을 바로하는 방법을 모른다.)

  • 답변

    3

    여기서 무슨 일이 일어나는지는 단추에서 UseSubmitBehavior = "true"로 설정하면 단추가로 렌더링된다는 것입니다. 이것은 입력 버튼을 눌렀을 때 양식을 제출하는 브라우저 기본 동작을 사용합니다. 그러나 UseSubmitBehavior = "false"로 설정했지만 버튼은 다음과 같이 렌더링됩니다. 클라이언트에서 onclick 이벤트는 양식을 제출하는 '__doPostBack()'에 연결됩니다.

    OnClientClick 속성에 아무 것도 추가하면 __doPostBack() 전에 실행됩니다. true 또는 false를 반환하면 값이 반환되고 __doPostBack()이 실행되지 않으므로 onclick 이벤트 처리가 종료됩니다. AjaxControlToolkit 당신이 그것을 사용하려는 경우,이 일을하는 컨트롤이

    <input type="button" name="button1" value="Click Me" onclick="return confirm('are you sure?');__doPostBack('button1','')" id="button1" /> 
    

    : 여기처럼 렌더링 된 태그가 어떻게 표시되는지를 보여줍니다. ConfirmButton 컨트롤 (http://www.asp.net/AJAX/AjaxControlToolkit/Samples/ConfirmButton/ConfirmButton.aspx)입니다.

    jQuery를 사용하려면 ConfirmButton 컨트롤과 기본적으로 동일한 예제가 있습니다.

    는 다음과 같이합니다 (OnClientClick 속성을 제거해야합니다) 보일 것입니다있는 거 버튼 당신 :

    <script type="text/javascript"> 
        $(function() { 
         var btn = $('#<%= button1.ClientID %>'); 
         var oldScript = btn.attr('onclick'); 
         btn.attr('onclick', ''); 
         btn.click(function() { 
          if (confirm('click a button.')) { 
           if (oldScript) { 
            if ($.isFunction(oldScript)) { 
             oldScript(); 
            } else { 
             eval(oldScript); 
            } 
           } 
           return true; 
          } else { 
           return false; 
          } 
         }); 
        }); 
    </script> 
    

    기본적으로는 제거 어떤이가하는 것입니다 : 여기

    <asp:Button ID="button1" runat="server" Text="Click Me" UseSubmitBehavior="false" onclick="button1_Click" /> 
    

    을 그리고는 자바 스크립트 코드입니다 현재 "onclick"속성 값을 가져 와서 임시 변수에 저장합니다. 그런 다음 확인을 "클릭"이벤트에 연결합니다. 확인 결과가 true이면 원래 "onclick"에 있던 이전 스크립트가 실행됩니다. 확인 결과가 false를 반환하면 아무 일도 발생하지 않습니다.

    +0

    당신의 별은 찬란합니다. 고맙습니다. – Jon

    +0

    이 솔루션을 구현 한 후 버튼은 정상 asp 버튼을 작동 한 후에 확인을 한 번만 요청합니다. 이 문제를 피하려면 제안을 제공해주세요. –

    관련 문제