سؤال

أحاول تحديث رسالة الخطأ للحصول على CustomValidator يستخدم ValidatorCallout عبر JavaScript. في الأساس التحقق منه لمعرفة ما إذا كان الرقم الذي تم إدخاله هو زيادة عدد محدد. لدي بعض الكود الذي سيقوم بتحديث رسالة الخطأ في المرة الأولى التي يتم تشغيلها، ولكن بعد ذلك لن يقوم بتحديث رسالة الخطأ، على الرغم من أن تنبيهات JavaScript أرى أن القيم قيد تحديثها بالفعل. فيما يلي وظيفة التحقق من صحة جافا سكريبت جانبية العميل التي أستخدمها:

    function checkIncrement(sender, args) {
    var incrementValue = parseInt(sender.orderIncrement); // Custom attribute registered with RegisterExpandoAttribute
    var remainder = args.Value % incrementValue;

    if ((remainder) != 0) {

        var remainder, lowRange, highRange;
        lowRange = parseInt(args.Value - remainder);
        highRange = parseInt(lowRange + incrementValue);

        sender.errormessage = "Closest possible values are <b>" + lowRange + "</b> or <b>" + highRange + "</b>"; // Gets updated once, but not after that
        alert("Low Range: " + lowRange); // always updated with current value

        args.IsValid = false;
        return;
    }

    args.IsValid = true;
}

أي فكرة عن كيفية تحديث رسالة الخطأ محدثة في كل مرة يتم فيها تشغيل هذا للتحقق من الصحة؟

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

المحلول

حاول القيام بما يلي:

sender.errormessage = "Your message here";
var cell = sender.ValidatorCalloutBehavior._errorMessageCell;
// cell is going to be null first time.
if (cell != null) {
    cell.innerHTML = "Your message here";
}

السبب في أنه تم تهيئة الرسالة بمجرد تهيئة الأمر هو أنه لم يتم إنشاء Callout في البداية. بمجرد إنشاء ذلك، فإن Callout مخفي فقط ولا يتم إنشاؤه في الظهور اللاحق. وبالتالي، فإن الرسالة التي تم تهيئتها عند إنشاءها ستتعطل وتستمر. الرمز أعلاه هو الاختراق وهناك يجب أن تكون هناك طريقة على غرار Set_ERrormessage، ولكن لا يوجد واحد.

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