لماذا هو قيمة حقل خاطئة تظهر في رسالة خطأ عند استخدام مسج (البعيد) التحقق من صحة؟

StackOverflow https://stackoverflow.com/questions/1626998

سؤال

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

$("#registrationForm").validate({
  rules: {      
    email: {
      required: true,
      email: true,
      remote: '<%=Url.Action(...) %>'
    },        
  },
  messages: {
    email: {
      required: "Please enter an email address",
      email: "Please enter a valid email address",
      remote: jQuery.format("{0} is already in use")
    }
});

وكانت المرة الأولى يتم إرسال بريد إلكتروني غير صالح (على سبيل المثال bob@mail.com)، وكما هو متوقع رسالة الخطأ. ومع ذلك، إذا كنت ثم أدخل البريد الإلكتروني غير صالح آخر (على سبيل المثال sue@mail.com)، والمساعد التحقق من صحة لا يزال يعرض "bob@mail.com قيد الاستخدام."

ولقد تتبعت المعلمات التي يتم الوصول إلى تحكم المحددة في الدعوة Url.Action وأنها صحيحة بالتأكيد (أي "sue@mail.com" يتم إرسالها على أنه عنوان البريد الإلكتروني عندما يكون ذلك هو ما دخلت في الميدان).

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

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

المحلول

وفشل حقل اسم المستخدم على حفظ الحليب تجريبي في نفس الطريق (عند دخول أسماء المستخدمين "بيتر" و "جورج")، لذلك كنت قد وجدت ربما خطأ في البرنامج المساعد.

نصائح أخرى

وبعد أكثر من سنتين، وعلة لا يزال لا يبدو أن تكون ثابتة، لذلك وهنا ما وجدته:

والمسألة هي في وظيفة remote:

remote: function(value, element, param) {
    if ( this.optional(element) )
        return "dependency-mismatch";

    var previous = this.previousValue(element);
    if (!this.settings.messages[element.name] )
        this.settings.messages[element.name] = {};
    previous.originalMessage = this.settings.messages[element.name].remote;
    this.settings.messages[element.name].remote = previous.message;

    // snip more code...
}

والمشكلة هي أن على 2 والتقييمات في وقت لاحق من هذه الوظيفة، وmessages[element.name].remote يحتوي على رسالة خطأ محددة (النص)، و <م> الفعلي يتم فقدان الرسالة الأصلية إلى الأبد عند الكتابة previous.originalMessage بعد ذلك.

وكنت قادرا على حل المشكلة عن طريق إضافة الاختيار قبل أن السطر:

if (!previous.originalMessage)
    previous.originalMessage = this.settings.messages[element.name].remote;

ولست متأكدا إذا كان هذا هو حقا <م> الصحيح حل، لكنه يعمل - فشل التحقق من صحة الآن إعادة تطبيق وظيفة التنسيق على كل فشل التحقق من صحة

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