0

JQuery ダイアログには 4 つのフィールドがあります。[保存] ボタンをクリックすると、次のことを確認して検証する必要があります

  1. すべての必須フィールドを検証します (validate.js および unobstructive.js を使用したフォームの送信時)
  2. ドロップダウンの値を確認し、それが特定のタイプ、つまり (冗長) である場合は、ユーザーに確認ダイアログを表示します。
  3. ユーザーが [はい] を押して確認した場合は、確認ダイアログを閉じて Ajax を呼び出します。

しかし、問題は、確認ダイアログで [はい] ボタンをクリックして確認すると、ダイアログは閉じますが、実行は下がらないことです。

つまり、フォーム データをシリアライズし、Ajax 呼び出しを行って Web サービスを呼び出します。

誰でも助けてください。

$(function () {

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

            $('#result').html(" ");

            var redunt = null;
            redunt = $(ClientCrud_StatusCodeId).find('option:selected').text();

            if ($(ClientCrud_StatusCodeId).find('option:selected').text() == "Redundant") {
                $('#clientRedundantMessage2').html("Client once made redundant cannot be reactivated. Are you sure ?");
                $("#RedundantMessage2").dialog(
                    {
                        autoOpen: false,
                        height: 170,
                        width: 420,
                        modal: true,
                        resizable: false,
                        title: "Confirmation for Redundant",
                        Content: "Fields cannot be left blank.",
                        buttons: {
                            "Yes": function () {
                                redunt = "Active";
                                $('#RedundantMessage2').dialog('close');
                            },
                            "No": function () {
                                $(this).dialog("close");
                                return false;
                            }
                        }
                    }) //.dialog("widget").draggable("option", "containment", "none");
                $("#RedundantMessage2").dialog("open");
            }

            if ($(this).valid()) 
            {
                debugger;
                if (redunt == "Active") {

                    $.ajax({
                        url: this.action,
                        type: this.method,
                        async: false,
                        cache: false,
                        data: $(this).serialize(),
                        error: function (request) {
                            $("#result").html(request.responseText);
                            //    event.preventDefault();
                        },
                        success: function (result) {
                            if (result == "success") {
                                $.ajax({
                                    url: "/Client/ClientGrid",
                                    type: 'POST',
                                    data: { "page": 0 },
                                    datatype: 'json',
                                    success: function (data) {
                                        $('#grid').html(data);
                                    },
                                    error: function () {
                                        alert('Server error');
                                    }
                                });

                                $('#myEditClientDialogContainer').dialog('close');
                                $('#myEditClientDialogContainer').remove()
                            }
                            else {
                                clearValidationSummary();
                                var a = '<ul><li>' + result + '</li></ul>';
                                $('#result').html(a);

                            }
                        }
                    });
                }
            }

            $("#griderrormsg1 li").hide().filter(':lt(1)').show();
            return false;
        });

        editallowed = true;
    });
4

1 に答える 1

0

コードのシーケンスに問題があると思います。関数の$("#RedundantMessage2").dialog( ...... );実行時にユーザーの応答を待たないでください。この場合は「はい」または「いいえ」なので、フラグredunt = "Active"は意味がありません。

ボタンオプションには、オプションが選択されたときに実行される関数があるため、投稿を実行するには関数を呼び出す必要があります

$(function () {

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

            $('#result').html(" ");

            var redunt = null;
            redunt = $(ClientCrud_StatusCodeId).find('option:selected').text();

            if ($(ClientCrud_StatusCodeId).find('option:selected').text() == "Redundant") {
                $('#clientRedundantMessage2').html("Client once made redundant cannot be reactivated. Are you sure ?");
                $("#RedundantMessage2").dialog(
                    {
                        autoOpen: false,
                        height: 170,
                        width: 420,
                        modal: true,
                        resizable: false,
                        title: "Confirmation for Redundant",
                        Content: "Fields cannot be left blank.",
                        buttons: {
                            "Yes": function () {
                                redunt = "Active";
                                trySend();
                                $('#RedundantMessage2').dialog('close');
                            },
                            "No": function () {
                                $(this).dialog("close");
                                return false;
                            }
                        }
                    }) //.dialog("widget").draggable("option", "containment", "none");
                $("#RedundantMessage2").dialog("open");
            }



            $("#griderrormsg1 li").hide().filter(':lt(1)').show();
            return false;
        });

        editallowed = true;
    });

他のjs関数

function trySend(){

    if ($('#IdOfYourForm').valid()) 
        {
            debugger;
            if (redunt == "Active") {

                $.ajax({
                    url: this.action,
                    type: this.method,
                    async: false,
                    cache: false,
                    data: $(this).serialize(),
                    error: function (request) {
                        $("#result").html(request.responseText);
                        //    event.preventDefault();
                    },
                    success: function (result) {
                        if (result == "success") {
                            $.ajax({
                                url: "/Client/ClientGrid",
                                type: 'POST',
                                data: { "page": 0 },
                                datatype: 'json',
                                success: function (data) {
                                    $('#grid').html(data);
                                },
                                error: function () {
                                    alert('Server error');
                                }
                            });

                            $('#myEditClientDialogContainer').dialog('close');
                            $('#myEditClientDialogContainer').remove()
                        }
                        else {
                            clearValidationSummary();
                            var a = '<ul><li>' + result + '</li></ul>';
                            $('#result').html(a);

                        }
                    }
                });
            }
        }

}
于 2013-03-19T22:09:12.000 に答える