-1

JQueryダイアログを使用して、さまざまなテーブルからさまざまなレコードを削除することを確認しようとしているため、コード内のさまざまな場所から参照されているのはdivです(ダイアログを再利用してさまざまな操作を確認します)。私はこの例を使用しています: http://jqueryui.com/dialog/#modal-confirmation

呼び出しごとに非常に異なるアクションを確認する必要があるため、ダイアログ オプション ボタンの [OK] ボタンまたは [キャンセル] ボタンのコールバック内に実行するコードを配置することはできません{}

ボタンが押されたことを示す戻り値を持つ VB の MsgBox のようなものを持ちたいと思います (「OK」、「同意」、「閉じる」など)。このようなもの:

if ( $(target_dialog).dialog('open') == 'Ok'){
    // Do something awesome
}else if( $(target_dialog).dialog('open') == 'Cancel') {
    // Do something not that awesome
}

ご協力いただきありがとうございます。

編集:これは、JS confirm() の例 ( http://www.w3schools.com/js/tryit.asp?filename=tryjs_confirm ) のようなものですが、ポップアップではなく、カスタマイズ可能にしたい柔軟な jqueryui ダイアログ。

EDIT2:@vishwanathが示唆するように

$("#dialog-confirm").dialog({
//height, modal, width... settings
buttons : {
    "OK": function() { 
        // here is the magic
            action = $(this).data('action');
        var actionToPerform = actions[action];
        actionToPerform.call(this);
        // end of magic
        $( this ).dialog( 'close' );
    }, 
    Cancel: function() {
        console.log("non awesome stuff here");
        $( this ).dialog( 'close' );
    }
}
});


var actions = {
action1 : function(){
    console.log(''Do action1 stuff here);
}, 
action2 : function(){
    console.log('Do action2 stuff here');
}
// and so on...
}

また、さまざまな親から、さまざまな回答に対してさまざまなアクションを実行できます。

$( '#dlgConfirm' ).data('action', 'action1').dialog( 'open' );

ありがとう。

4

2 に答える 2

0

考えられる解決策は、jquery UI のカスタム オプションを使用することです。

次のように、ダイアログの作成時に動的に設定されるモード カスタム オプションを作成します。クリック ハンドラーでそのオプションを確認し、モードを使用して、モードに応じて適切なアクションを取得します。

var mode = 'edit'; //Set this dynamically
$("#dialog-confirm").dialog({
    height : 140,
    modal : true,
    mode : mode,
    buttons : [ {
        text : "OK",
        click : function(event) {
            var mode = $("#dialog-confirm").dialog('option', mode);
            var actionToPerform = actions[mode];
            actionToPerfom.call(this, event);
        }
    }, 
    {
        text : "Cancel",
        click : function(event, ui) {
            console.log("non awesome stuff here");
        }
    } ]
});


var actions = {
    edit : function(){
        console.log(''Do Edit stuff here);
    }, 
    delete : function(){
        console.log('Do delete stuff here');
    }

}
于 2013-05-06T07:39:32.747 に答える