8

私はここで特有の問題を抱えており、私の人生では解決策が何であるかを理解することはできません。次のコードは動的に作成されるのではなくaspx、ファイルにすぐに作成されることに注意してください。

<button type="button" runat="server" id="btnSubmit"
  OnServerClick="btnSubmit_Click" onclick="return confirm('Sure?');">
    Submit
</button>

これは、属性がない限り問題なく機能しonclickます。つまり、OnServerClickハンドラーは正常に起動されます。しかし、onclick属性を使用する場合、確認ダイアログボックスを確認するか拒否するかに関係なく、そうではありません。

私は何が間違っているのですか?ありがとう

4

8 に答える 8

15

生成されたソースコードを見ると、次のことがわかります。

onclick="return confirm('Sure?'); __doPostBack('btnSubmit','')"

したがって、何が起こっているのかというと、_doPostBackは呼び出されません。あなたが探していることをするためのハッキーな方法は次のとおりです。

<button type="button" runat="server" id="btnSubmit"
  OnServerClick="btnSubmit_Click" onclick="if (confirm('Sure?')) ">

本当の正しい方法は、Webコントロールを使用することです。

<asp:Button runat="server"
        OnClick="btnSubmit_Click" OnClientClick="return confirm('Sure?')" Text="Submit" />
于 2009-08-07T14:41:18.260 に答える
3

私はより多くの成功を収めました

<asp:Button ID="btnSubmit" runat="server" Text="Save" UseSubmitBehaviour="false"
OnClick="btnSubmit_Click" OnClientClick="if (!confirm('Sure?')) return" />
于 2010-01-18T07:07:52.547 に答える
3

受け入れられた答えは完璧ではありません。を使用しない場合はtype="button"、[キャンセル]をクリックしても、Webページはポストバックを実行します。正しくて最も簡単な方法は、短絡評価;を利用してこのハックを行うことです。以下のように、に置き換え&& !ます。

<button runat="server" id="btnSubmit"
        OnServerClick="btnSubmit_Click" onclick="return confirm('Sure?') && !">

出力は次のようになります。

<button id="btnSubmit"
        onclick="return confirm('Sure?') && ! __doPostBack('btnSubmit','')">

返され、評価され、返され、評価されないtrue && !undefinedためtrue、正しい戻り値が得られます。これはまさに私たちが望んでいることです。undefinedfalse && !undefinedfalseundefined

于 2014-04-18T11:35:49.057 に答える
1

onclickイベントがバブリングしていないようです。

あなたはただ使うことができるはずです

OnClientClick="return confirm('Sure?');

他のonClickは必要ないと思います。

編集:

この方法では、関数をOnClickイベントに手動でフックする必要があります。


私は今朝属性を作り上げているので、自分自身を償還するための無駄な努力で-

別の方法は、イベントをキャッチするためにjavascriptを挿入することです。何かのようなもの..

$("form").submit(function() {

        var resp = confirm("Save & Submit?");
        if (resp) {
            serializeStats();
            return true;
        }
        else {
            return false;
        }

    });

しかし、これを行うためのより良いインラインの方法があったことを覚えています。今カフェインの時間。

于 2009-08-07T14:37:42.320 に答える
1

送信するボタンのタイプを変更するのはどうですか、それはうまくいきます:

<button type="submit" runat="server" id="btnSubmit"
  OnServerClick="btnSubmit_Click" onclick="return confirm('Sure?');">
    Submit
</button>
于 2009-08-07T14:47:25.567 に答える
1

これを試して:

<button type="button" runat="server" id="btnSubmit"
OnServerClick="btnSubmit_Click" onclick="if(!confirm('Sure?')) return;">
Submit
</button>
于 2015-10-20T19:19:36.367 に答える
0

<button>はHtmlButtonコントロールであり、OnServerClickが唯一のサーバー側クリックイベントです。OnClickはASP.NETによって認識されないため、ポストバックの前にクライアント側のjavascriptコードを実行する場合に備えて、そのままクライアントに渡されます。

<asp:button>は、OnClickサーバー側イベントとクライアント側のOnClientClickで同じことを実行するWebControlです。

確認('sure?')がfalseを返し、ポストバックメカニズムを停止するため、表示された動作が得られていると思います。それはあなたが所定の位置にonclickを持っていないときにそれが機能する理由を説明するでしょう。

于 2009-08-07T14:44:32.480 に答える
0

フロントサイト

  <button  id="submit1" runat="server"  
              onclick="if(confirm('Sure?')) { } else{ return false} ;"    
              onserverclick="submit_ServerClick"  >save</button>

バックサイト

protected void submit_ServerClick(object sender, EventArgs e)
{
}
于 2018-07-25T05:49:02.653 に答える