سؤال

لدي جهاز جائق الإكمال التلقائي الذي يحصل على البيانات الموجودة من عمل MVC الخاص بي. أريد التأكد من أن البيانات التي أدخلت في الحقل غير موجود بالفعل في قاعدة البيانات.

كان لدي thisworkig باستخدام .Result و .Change على الإكمال التلقائي لتعيين الحقل إلى الفصل = "خطأ في التحقق من صحة الإدخال". عندما أضفت التحقق من صحة عميل XVAL، فإن هذا لا يزال يعمل، لكن Xval يبدو أن مسح فئة CSS حتى الآن يذهب الإدخال الحقلي أحمر لفترة وجيزة ثم يعود إلى خلفية واضحة.

بدلا من محاولة تغيير رمز XVAL، أفضل الحصول على التحقق من صحة عميل XVAL لعرض الحقل في حالة خطأ كما أن أخطاء التحقق من صحة بيانات العميل العادي.

كيف يمكنني ان افعل هذا؟ ما الرمز الذي يمكنني استخدامه في الحدث التلقائي .RESult لإجبار حالة الخطأ في XVAL؟

تحديث:جربت الفكرة من وايت بارنيت ولكن كما ترون من تعليقاتي ليس ما أريد. هنا هو رمز ما لدي:

علامة الحقل:

            <p>
                <%= Html.LocalisedLabel("ProjectId") %>
                <%= Html.TextBox("project.ProjectId") %>
                <%= Html.ValidationMessage("project.ProjectId", "*") %>
            </p>

علامة XVAL:

       <%= Html.ClientSideValidation<ProjectBO>("project").UseValidationSummary("myValidationSummary") %>
             <%= Html.ClientSideValidation<ProjectBO>("project").AddRule("ProjectId", new RemoteRule(Url.Action("ValidateProjectIdCreate", "LookUp", new { projectId = Model.ProjectId})))%>

علامة جافا سكريبت للكمبيوتر التلقائي:

<script type="text/javascript">

    $(document).ready(function() {
        $('#project_ProjectId').autocomplete('<%= Url.Action("ProjectIdList", "LookUp") %>',
{
    delay: 10,
    minChars: 1,
    matchCase: 0,
    matchSubset: 1,
    autoFill: false,
    maxItemsToShow: 10,
    cacheLength: 10
}
);

        $('#project_ProjectId').result(function(item) {
            if (item) {
                //match
                $('#project_ProjectId').attr("class", "input-validation-error");
            }
            else {
                $('#project_ProjectId').removeAttr("class");
            }
        });
        $('#project_ProjectId').change(function() {
            $('#project_ProjectId').attr("class", "");
        });
    });
</script>

يمنحني هذا البرنامج النصي الحدث للتعامل ولكن ما الذي يمكنني وضعه فيه؟

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

المحلول

لما لا ترقية إلى XVAL 1.0 والاستفادة من ألعاب التحقق من صحة أجاكس؟ وبهذه الطريقة لن تضطر إلى محاربة الإطار على هذا.


حسنا، نظرا لأن هذه الزاوية لن تعمل، ربما يمكنك استخدام AutoComplete.Result بالإضافة إلى API التحقق من صحة JQuery (XVAL أيضا يركب ذلك أيضا هذا) للتعامل مع الأشياء.

نصائح أخرى

أخيرا حصلت على عملت بها.

لقد استخدمت مستقبل الإكمال التلقائي على حقل الإدخال لتوفير بعض الإرشادات للمستخدم من خلال عرض قائمة البحث عن إدخالات قاعدة البيانات الحالية.

عند الخروج من الحقل إما تحديد عنصر قائمة معروضا من الإكمال التلقائي أو عن طريق كتابة إدخال قاعدة بيانات غير موجودة حرائق XVAL Remotevalidator لإما تعيين حالة فشل التحقق من الصحة أو مسحها.

الرمز هو كما يلي:

       <%= Html.ClientSideValidation<ProjectBO>("project").UseValidationSummary("myValidationSummary"

.addrule ("projectid"، remoterule جديد (url.action ("ValidateProjectidreateCreate"، "Lookup"))٪>

شبكة التلقائي النصي هو كفلور:

<script type="text/javascript">
    $(document).ready(function() {
        $('#project_ProjectId').autocomplete('<%= Url.Action("ProjectIdList", "LookUp") %>',
            {
                delay: 10,
                minChars: 1,
                matchCase: 0,
                matchSubset: 1,
                autoFill: false,
                maxItemsToShow: 10,
                cacheLength: 10
             }
          );
    });
</script>

ثم قمت بإزالة أحداث AutoCollete.Change.

يعمل جيدا.

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