ASP 버튼에서 포스트 백을 비활성화하는 방법


135

ASP 버튼이 있습니다. 서버 측이므로 로그인 한 사용자에게만 표시 할 수 있지만 자바 스크립트 함수를 실행하고 싶을 때 runat = "server"인 경우 항상 포스트 백 이벤트를 호출합니다.

또한 <input...서버에서 실행되지 않는 일반 버튼 ( >) 이 있으며 정상적으로 작동합니다 ...

이 버튼으로 자바 스크립트 만 실행하고 포스트 백하지 않도록하려면 어떻게해야합니까?

답변:


263

완료되면 자바 스크립트가 false를 반환하도록합니다.

<asp:button runat="server".... OnClientClick="myfunction(); return false;" />

16
많은 경우 사람들은 <asp : Button OnClientClick = "myFunction ()"/> 구문으로 onclick 또는 OnClientClick을 사용합니다. 여기서 myFunction ()은 false를 반환하고 이것으로 충분하지 않습니다. OnClientClick = "return myFunction ()"을 사용해야합니다.
브론 데이비스

17
UseSubmitBehavior = "False"와; return false를 추가해야했습니다.
rob

9
'UsingValidation = "false"'를 추가해야합니다. 그렇지 않으면 'WebForm_DoPostBackWithOptions'와 추가 마크 업이 추가됩니다.
카터 메 드린

이것은 ASP.NET 4 이상에서 작동하지 않았지만 Konstantin의 대답은 간단 OnClientClick="return false"했습니다.
TylerH


15

jquery 클릭 동작을 사용하고 preventDefault () 함수를 사용하여 포스트 백을 피할 수 있습니다

<asp:button ID="btnMyButton" runat="server" Text="MyButton" />


$("#btnMyButton").click(function (e) {
// some actions here
 e.preventDefault();
}

비활성화 할 조건을 테스트 할 수 있기 때문에 이것은 우아한 대답입니다.
John Mott

1
preventDefault를 사용하면이 이벤트에 의존하는 다른 이벤트가 중지되므로 -1
Piotr Kula

1
@ppumkin : preventDefault는 다른 이벤트 리스너에게이 이벤트를 처리 했으므로 처리하지 않아도된다고 알려주는 좋은 방법입니다. 나는 당신이 의미하는 것이 stopPropagation이라고 생각합니다. 실제로 다른 이벤트 리스너가 듣지 못하게합니다.
Sebbas

예 아아아 아아아 아니. 4 년 후 나는 지금 훨씬 더 뒤에 서 있습니다. 아무 것도하지 마십시오.
Piotr Kula

8

이걸 고려하세요.

<script type="text/javascript">
Sys.WebForms.PageRequestManager.getInstance().add_beginRequest(BeginRequest);
function BeginRequest(sender, e) {
    e.get_postBackElement().disabled = true;

}
     </script>

6

다른 것들은 당신이 거짓을 돌려주기 위해 당신의 콜백이 필요하다는 것입니다. 그러나 onclick을 설정하여 작업을 수행하는 것은 못생긴 오래된 방법이라고 덧붙이고 싶습니다. 방해받지 않는 자바 스크립트 에 대해 읽는 것이 좋습니다 . jQuery 와 같은 라이브러리를 사용하면 인생을 더 편하게 할 수 있고 HTML이 자바 스크립트에 덜 결합 될 수 있습니다 ( 현재 jQuery 는 Microsoft 에서 지원합니다 !)


4

ASP.NET은 항상 생성 asp:Buttonint로서 input type=submit.
게시물을하지 않지만 서버 측의 요소에 대한 제어가 필요한 버튼을 원하면 속성 type=button및을 사용하여 간단한 HTML 입력을 만드십시오 runat=server.

을 수행하는 클릭 동작을 비활성화하면 다음 OnClientClick=return false과 같은 함수를 만들지 않는 한 클릭시 아무것도 수행되지 않습니다.

function btnClick() {
    // do stuff
    return false;
}

3

사용중인 .NET 프레임 워크의 버전을 말하지 않습니다.

v2.0 이상을 사용하는 경우 버튼의 onclick 이벤트가 발생하면 OnClientClick 속성을 사용하여 Javascript 함수를 실행할 수 있습니다.

서버 포스트 백이 발생하지 않도록 false하려면 호출 된 JavaScript 함수에서 리턴 하면됩니다.


3

또한 수락 된 답변에 대해서는 UseSubmitBehavior = "false" MSDN을 사용할 수 있습니다.


ASP.NET은 다음을 추가합니다. __doPostBack(클라이언트 클릭 스크립트 끝까지
IvanH

3

제 경우에는 onClientClick에 return을 추가하여 해결했습니다.

뒤에 코드

function verify(){
  if (document.getElementById("idName").checked == "") {
    alert("Fill the field");
    return false;
  }
}

디자인 표면

<asp:Button runat="server" ID="send" Text="Send" onClientClick="return verify()" />

OnClick이 후 메소드 를 실행하는 방법.
5377037

2

당신은 코드를 사용할 수 있습니다 :

<asp:Button ID="Button2" runat="server"
     Text="Pulsa"
     OnClientClick="this.disabled=true"
     UseSubmitBehavior="False"/>

니가 제출하면

...
<form id="form1" runat="server" onsubmit="deshabilita()">
...
<script type="text/javascript">
    function deshabilita()
    {
        var btn = "<%= Button1.ClientID %>";
        if (confirm("Confirme postback"))
        {
            document.getElementById(btn).disabled = true;
            return true;
        }
        return false;
    }
</script>


2

검증

이 예에서 나는 두 개의 컨트롤을 사용 ddl하고 txtbox, 행복한 코딩을

 asp:ScriptManager ID="script1" runat="server" /asp:ScriptManager

    asp:UpdatePanel ID="Panel1" runat="server"
       ContentTemplate

// ASP BUTTON
asp:Button ID="btnSave" runat="server" Text="Save" class="btn btn-success" OnClientClick="return Valid()" OnClick="btnSave_Click"


   /ContentTemplate    
    /asp:UpdatePanel    

  <script type="text/javascript">
        function Valid() {

            if ($("#ctl00_ContentPlaceHolder1_YOUR CONTROL NAME").val() == 0) {
                alert("Please select YOUR TEXT");
                $("#ctl00_ContentPlaceHolder1_YOUR CONTROL NAME").focus();
                return false;
            }

            if ($("#ctl00_ContentPlaceHolder1_YOUR CONTROL NAME").val().length == 0) {
                alert("Please Type YOUR TEXT");
                $("ctl00_ContentPlaceHolder1_YOUR CONTROL NAME").focus();
                return false;
            }
            return true;
        }
</script>

2

이를 위해 JQuery를 사용할 수 있습니다

<asp:Button runat="server" ID="btnID" />

JQuery보다

$("#btnID").click(function(e){e.preventDefault();})
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.