ASPボタンでポストバックを無効にする方法


135

ASPボタンがあります。これはサーバー側なので、ログインしているユーザーに対してのみ表示できますが、JavaScript関数を実行したいのですが、runat = "server"の場合は常にポストバックイベントを呼び出しているようです。

<input...サーバーで実行されていない通常のボタン(>)もあり、正常に動作します...

このボタンでJavaScriptのみを実行し、ポストバックを実行しないようにするにはどうすればよいですか?

回答:


263

完了すると、JavaScriptがfalseを返すようにします。

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

16
多くの場合、人々は次の構文でonclickまたはOnClientClickを使用します。
Bron Davies、

17
UseSubmitBehavior = "False"と; return falseを追加する必要がありました
rob

9
必ず 'CausesValidation = "false"'を追加してください。追加しない場合、 'WebForm_DoPostBackWithOptions'と追加のマークアップが追加されます。
カーターメドリン2013

これはASP.NET 4以降では機能しませんでしたが、コンスタンチンの答えは単純に機能OnClientClick="return false"しました。
TylerH


15

jqueryクリックアクションを使用し、preventDefault()関数を使用してポストバックを回避できます。

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


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

無効にする条件をテストできるので、これはエレガントな答えです。
ジョンモット

1
preventDefaultは、このイベントに依存する他のイベントを停止するため、絶対に使用しないでください-1
Piotr Kula

1
@ppumkin:preventDefaultは、他のイベントリスナーにこのイベントを処理したことを伝えるための優れた方法です。あなたが言ったのは、stopPropagationだったと思います。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

その他は、falseを返すためにコールバックが必要であることは正しいです。ただし、onclickを設定してそれを行うのは、醜い古い方法で行うことを付け加えておきます。控えめなjavascriptについて読むことをお勧めします。jQueryのようなライブラリを使用すると、作業が楽になり、HTMLとJavaScriptの結合が少なくなります(jQueryは現在Microsoftでサポートされています)。


4

ASP.NETは常にasp:Buttonとして生成されますinput type=submit
投稿を行わないボタンが必要だが、サーバー側の要素を制御する必要がある場合は、属性type=buttonrunat=server

のクリックアクションを無効にOnClientClick=return falseすると、次のような関数を作成しない限り、クリック時に何も実行されません。

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

3

使用している.NETフレームワークのバージョンはわかりません。

v2.0以降を使用している場合は、OnClientClickプロパティを使用して、ボタンのonclickイベントが発生したときにJavaScript関数を実行できます。

サーバーのポストバックが発生しないようにするために必要なことfalseは、呼び出されたJavaScript関数から戻ることだけです。



3

私の場合、onClientClickにリターンを追加することを解決しました:

コードビハインド

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"/>

neeが提出した場合

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

検証あり

この例では、私は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.