1

私はいくつかのjquery UIコードを既存のasp.netアプリに入れようとしていますが、助けを借りることができます...

ボタンがあり、ユーザーがクリックすると、jquery UI ダイアログをポップアップし、2 つの go/nogo 確認ボタンを表示したいと考えています。

これは機能しますが、ボタンをクリックすると開いてすぐに閉じます...新しいjqueryユーザーとして、単純なものが欠けていると確信しています...

ダイアログを開くためのJavaScriptは次のとおりです。

<script type="text/javascript" >

    $(function() {
    // Cancel Event Dialog Box
    $('#CancelDialog').dialog({
        autoOpen: false,
        width: 500,
        buttons: {
            "Cancel This Event": function() {$(this).dialog("close");}, 
            "Do Not Cancel": function() {$(this).dialog("close");} 
        }
    });

});
</script>

これを呼び出すコードは次のとおりです。

<asp:Button id="btnCancelMeeting" Text="Cancel Event" runat="server" />
 <script language="javascript" type="text/javascript">  
    $(document).ready(function() {  
    $('#CancelDialog').dialog();  
    $('#btnCancelMeeting').click(function() {$('#CancelDialog').dialog('open'); });  
         });  
</script>

<div id="CancelDialog" title="Cancel and Event or Meeting"><p>Cancel this event.</p></div>   

要約すると、ボタンをクリックすると、必要な 2 つのボタンとメッセージを含むダイアログが表示されますが、約 1 秒後に自動的に閉じます...何が間違っていますか?

編集: OK、何が起こっているのかがわかったと思います...ボタンをクリックすると、必要に応じてダイアログが表示されますが、ページがサーバーから再度リロードされます...これにより、ページ全体がリセットされ、ダイアログ。

だから私が本当にしたいのは、この動作を模倣することです:

<asp:Button id="btnDelete" Text="Delete Event" runat="server" OnClientClick='javascript:return confirm(&quot;Are you sure you would like to permanently delete this event/meeting? This action cannot be undone.&quot;)' OnClick="btnDelete_Click" />

クリックするとクライアント側のイベントが生成され、「OK」が選択された場合にのみ、ページが強制的にリロードされます。この queryUI ダイアログ ボックスを OnClientClick イベントから切り離すための構文を誰か教えてもらえますか?

4

5 に答える 5

8

したがって、サーバーをトリガーする前にイベントをキャッチしたいですよね?

まず、Clickイベントを削除し、そのボタンを通常のボタンとしてのみ使用し、現在のボタンを次のように変更する必要があります。

<asp:Button id="btnShowDialog" Text="Delete Event" runat="server" OnClientClick="$('#myDialog').dialog('open');" />

または、このために、サーバーを使用して作成する代わりに、通常のリンクまたはhtmlボタンを使用できます

<input type="button" value"Delete Event" onclick="$('#myDialog').dialog('open');" />

これにより、ダイアログが開きます。

ここで必要なのは、サーバーイベントをトリガーするボタンをダイアログに配置することです。

ボタンをクリックするとブラウザのステータスバーを見つけることができる保存javascriptを渡すことができます。つまり、javascriptのみを使用してポストバックを実行します-ボタンをLinkBut​​tonに変更し、その上にマウスを置くと、正しいコードが見つかります。

変更:

 "Cancel This Event": function() {$(this).dialog("close");} 

に:

"Cancel This Event": function() {
    __doPostBack('btnDeleteEvent', '');
} 

これはbtnDeleteEventと同じように機能します。実際にクリック動作を実行するには、この名前と呼ばれるLinkBut​​tonが必要です(ページに表示されないようにtext = ""を作成します)。

<asp:LinkButton ID="btnDeleteEvent" runat="server" Text="" onclick="btnDeleteEvent_Click" />

コードビハインドファイルに、起動するイベントを含めることを忘れないでください

protected void btnDeleteEvent_Click(object sender, EventArgs e)
{
    // do something
}

更新しました

追加:完全なソースへのリンク

于 2009-02-11T14:17:06.683 に答える
1

私はあなたよりもjqueryをよく知りませんが、あなたが望むことをするためには、会議のキャンセルボタンのクリックがfalseを返すようにする必要があると思います:

$('#btnCancelMeeting').click(function() {$('#CancelDialog').dialog('open'); return false; });

次に、[このイベントをキャンセル] ボタンでサーバーとのキャンセルを開始します。

"Cancel This Event": function() { CallFunctionThatReallyCancelsTheEvent(); $(this).dialog("close");},
于 2009-02-11T13:28:30.140 に答える
1

を取り外します

$('#CancelDialog').dialog();  

$(document).ready(function() {  

そしてそれを試してください。

テイク 2. 「ボタン」のデフォルトの動作が送信されていることが、ページのリロードを引き起こしている可能性があります。type='button' をボタンに追加して、デフォルトで送信されないようにすることはできますか?

于 2009-02-11T12:58:22.737 に答える