استبدال jQuery لتأكيد JavaScript
سؤال
دعنا نقول أنني أريد مطالبة المستخدم قبل السماح لهم بحفظ سجل. لذلك لنفترض أن الزر التالي محدد في الترميز:
<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/
إذا كنت بحاجة إلى مربع تأكيد نهائي واحد فقط قبل الانتقال إلى الرمز النهائي مثل حفظ ، فمن المؤكد أن هذا سيساعد على استدعاء وظيفة حفظ () في وظيفة رد الاتصال لنقر فوق الزر. هذا جيّد.
لدي مشكلة أخرى على النحو التالي: أريد استخدام مربع تأكيد مخصص هذا في شكل التحقق من صحة النموذج حيث قد تكون هناك حالات وسيناريوهات متعددة للتأكيد واحد تلو الآخر.
إذا قال المستخدم بنعم لتأكيد المربع الأول ، نريد تقديم مربع التأكيد الثاني بناءً على شروط بيانات النموذج.
إذا قال المستخدم مرة أخرى نعم إلى مربع التأكيد الثاني هذا ، فقد نحتاج إلى تقديم مربع التأكيد التالي. هذه هي المشكلة ، وهذا ليس ممكنا في هذه الحالات ..