سؤال

دعنا نقول أنني أريد مطالبة المستخدم قبل السماح لهم بحفظ سجل. لذلك لنفترض أن الزر التالي محدد في الترميز:

<asp:Button ID="btnSave" runat="server" OnClick="btnSave_Click"></asp:Button>

لإجبار موجه مع JavaScript العادي ، يمكنني توصيل حدث Onclick حتى يكون زر حفظ بلدي شيء مثل هذا (يمكنني القيام بذلك في Page_Load):

btnSave.Attributes.Add("onclick",
    "return confirm('are you sure you want to save?');");

سيتم حظر مكالمة التأكيد حتى يضغط المستخدم فعليًا على الأزرار نعم/لا ، وهو السلوك الذي أريده. إذا ضغط المستخدم على "نعم" ، فعندئذ بلدي btnSave_OnClick سيتم استدعاء الطريقة.

بالنسبة لحوار jQuery الذي هو المكافئ ، جربت شيئًا كهذا (انظر أدناه). ولكن المشكلة هي أنه على عكس JavaScript Issistrit () ، فإنها ستصل إلى هذه الوظيفة (Displayyesnoalert) ثم تابع طريقة Btnsave_onclick على الجانب C#. أحتاج إلى طريقة لجعله "كتلة" ، حتى يضغط المستخدم على الزر نعم أو بدون ، ثم إرجاع صحيح أو خطأ بحيث سيتم استدعاء BTNSAVE_ONCLICK أو لا يتم استدعاؤه اعتمادًا على إجابة المستخدم.

حاليًا ، استسلمت للتو وذهبت مع تأكيد JavaScript ، لقد تساءلت عما إذا كانت هناك طريقة للقيام بذلك.

function displayYesNoAlert(msg, closeFunction) {
    dialogResult = false;

    // create the dialog if it hasn't been instantiated
    if (!$("#dialog-modal").dialog('isOpen') !== true) {

        // add a div to the DOM that will store our message
        $("<div id=\"dialog-modal\" style='text-align: left;' title='Alert!'>").appendTo("body");

        $("#dialog-modal").html(msg).dialog({
            resizable: true,
            modal: true,
            position: [300, 200],
            buttons: {
                'Yes': function () {
                    dialogResult = true;
                    $(this).dialog("close");
                },
                'No': function () {
                    dialogResult = false;
                    $(this).dialog("close");
                }
            },
            close: function () {
                if (closeFunction !== undefined) {
                    closeFunction();
                }
            }
        });
    }
    $("#dialog-modal").html(msg).dialog('open');

}
هل كانت مفيدة؟

المحلول

يمكنني استخدام وظيفة رد الاتصال التي يتم رفعها عند النقر فوق زر محدد مثل نعم. لن تكون قادرًا على منع التنفيذ في برنامج نصي ، ولكن لديك أيضًا واجهة المستخدم الرد على إجراءات المستخدم.

نصائح أخرى

قد يكون هذا بسيطًا مثل استخدام زر "حفظ" الحالي لإطلاق الحوار "تأكيد" ، ثم داخل مربع حوار "تأكيد" ، يطلق زر "نعم" حدث "BTNSAVE_CLICK"

أعتقد أنني أسيء فهم السؤال في البداية ... قد يكون هذا بعض المساعدة لك ، على الرغم من أنني لم أختبره. http://tutorialzine.com/2010/12/better-confirm-box-jquery-css3/

إذا كنت بحاجة إلى مربع تأكيد نهائي واحد فقط قبل الانتقال إلى الرمز النهائي مثل حفظ ، فمن المؤكد أن هذا سيساعد على استدعاء وظيفة حفظ () في وظيفة رد الاتصال لنقر فوق الزر. هذا جيّد.

لدي مشكلة أخرى على النحو التالي: أريد استخدام مربع تأكيد مخصص هذا في شكل التحقق من صحة النموذج حيث قد تكون هناك حالات وسيناريوهات متعددة للتأكيد واحد تلو الآخر.

إذا قال المستخدم بنعم لتأكيد المربع الأول ، نريد تقديم مربع التأكيد الثاني بناءً على شروط بيانات النموذج.

إذا قال المستخدم مرة أخرى نعم إلى مربع التأكيد الثاني هذا ، فقد نحتاج إلى تقديم مربع التأكيد التالي. هذه هي المشكلة ، وهذا ليس ممكنا في هذه الحالات ..

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top