سؤال

هذا لم يحدث لي من قبل ، ولكن لسبب ما كل من العميل والخادم الجانب التحقق من صحة الأحداث لا يتم تشغيلها:

<asp:TextBox ID="TextBoxDTownCity" runat="server" CssClass="contactfield" />
<asp:CustomValidator ID="CustomValidator2" runat="server" EnableClientScript="true"
    ErrorMessage="Delivery Town or City required"
    ClientValidationFunction="TextBoxDTownCityClient" 
    ControlToValidate="TextBoxDTownCity"
    OnServerValidate="TextBoxDTownCity_Validate" Display="Dynamic" >
</asp:CustomValidator>

التحقق من جانب الخادم الحدث:

protected void TextBoxDTownCity_Validate(object source, ServerValidateEventArgs args)
{
    args.IsValid = false;
}

التحقق من جانب العميل الحدث:

function TextBoxDCountyClient(sender, args) {
    args.IsValid = false;
    alert("test");
}

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

نظرت في الإخراج ، ASP.NET هو الاعتراف من جانب العميل وظيفة:

ASP.NET جافا سكريبت الإخراج:

var ctl00_ctl00_content_content_CustomValidator2 = document.all ? document.all["ctl00_ctl00_content_content_CustomValidator2"] : document.getElementById("ctl00_ctl00_content_content_CustomValidator2");

ctl00_ctl00_content_content_CustomValidator2.controltovalidate = "ctl00_ctl00_content_content_TextBoxDTownCity";

ctl00_ctl00_content_content_CustomValidator2.errormessage = "Delivery Town or City required";

ctl00_ctl00_content_content_CustomValidator2.display = "Dynamic";

ctl00_ctl00_content_content_CustomValidator2.evaluationfunction = "CustomValidatorEvaluateIsValid";

ctl00_ctl00_content_content_CustomValidator2.clientvalidationfunction = "TextBoxDTownCityClient";

المقدمة custom validator:

<span id="ctl00_ctl00_content_content_CustomValidator2" style="color:Red;display:none;">Delivery Town or City required</span> 

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

تحرير:الخطأ المطبعي الصقت في الخطأ وظيفة لا تزال نفس المشكلة

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

<asp:TextBox ID="TextBox1" runat="server" />
<asp:CustomValidator ID="CustomValidator1" runat="server" 
ErrorMessage="CustomValidator" ClientValidationFunction="TextBoxDAddress1Client"></asp:CustomValidator>
<asp:Button ID="Button1" runat="server" Text="Button" onclick="Button1_Click" />
هل كانت مفيدة؟

المحلول

الخاص بك CustomValidator سوف النار إلا عندما TextBox ليست فارغة.

إذا كنت بحاجة للتأكد من أنه ليس فارغ ثم سوف تحتاج إلى RequiredFieldValidator أيضا.

ملاحظة: إذا كان عنصر تحكم الإدخال فارغ ، لا التحقق من صحة وظائف تسمى ، نجاح التحقق من الصحة.استخدام RequiredFieldValidator التحكم تتطلب من المستخدم إدخال البيانات في تحكم الإدخال.

تحرير:

إذا كان الخاص بك CustomValidator يحدد ControlToValidate السمة (، الأصلي الخاص بك على سبيل المثال لا) ثم التحقق من صحة الوظائف إلا أن يسمى عند التحكم ليست فارغة.

إذا كنت لا تحديد ControlToValidate ثم التحقق من صحة الوظائف سوف يطلق في كل مرة.

وهذا يفتح ثانية ممكن حل لهذه المشكلة.بدلا من استخدام منفصلة RequiredFieldValidator, هل يمكن حذف ControlToValidate سمة من CustomValidator و الإعداد الخاص بك التحقق من صحة الوظائف أن تفعل شيئا مثل هذا:

العميل كود (جافا سكريبت):

function TextBoxDCountyClient(sender, args) {
    var v = document.getElementById('<%=TextBoxDTownCity.ClientID%>').value;
    if (v == '') {
        args.IsValid = false;  // field is empty
    }
    else {
        // do your other validation tests here...
    }
}

برمجية من جانب الخادم (C#):

protected void TextBoxDTownCity_Validate(
    object source, ServerValidateEventArgs args)
{
    string v = TextBoxDTownCity.Text;
    if (v == string.Empty)
    {
        args.IsValid = false;  // field is empty
    }
    else
    {
        // do your other validation tests here...
    }
}

نصائح أخرى

استخدام هذا:

<asp:CustomValidator runat="server" id="vld" ValidateEmptyText="true"/>

التحقق من صحة حقل فارغ.

أنت لا تحتاج إلى إضافة 2 المصادقون !

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

لذا لا يمكنك أن تفعل هذا...

<script>
  function vld(sender, args) { args.IsValid = true; }
</script>
<asp:CustomValidator runat="server" id="vld" ClientValidationFunction="vld" />

ولكن هذا يعمل:

<script>
  function validate_vld(sender, args) { args.IsValid = true; }
</script>
<asp:CustomValidator runat="server" id="vld" ClientValidationFunction="validate_vld" />

أظن أنه يتعارض مع الداخلية .صافي جافا سكريبت ؟

هل تحقق من أن السيطرة مما تسبب في ما بعد الظهر قد CausesValidation مجموعة ترو وأنه لا صحة المجموعة المنوطة بها ؟

لست متأكدا ما آخر قد يؤدي هذا السلوك.

أيضا التحقق من أن كنت لا تستخدم التحقق من صحة الجماعات كما أن التحقق من صحة متعود النار إذا validationgroup تم تعيين الخاصية و لا صراحة يسمى طريق

 Page.Validate({Insert validation group name here});

التحقق من جانب الخادم لن النار إذا التحقق من جانب العميل غير صالح ، إعادة النشر هو عدم إرسال.

أليس لديك التحقق من صحة الأخرى التي لا تمر ؟

على التحقق من جانب العميل لم يتم تنفيذ لأنك المحدد ClientValidationFunction="TextBoxDTownCityClient" وهذا سوف ابحث عن وظيفة اسمه TextBoxDTownCityClient كما وظيفة التحقق من صحة, ولكن وظيفة يجب أن يكون اسم TextBoxDAddress1Client

(كما كتب)

شكرا على تلك المعلومات على ControlToValidate LukeH!

ما كنت أحاول القيام به في قانون بلدي هو فقط ضمان أن بعض النصوص حقل بعض النص في الحقل عند حقل النص ب له قيمة خاصة.خلاف ذلك, يمكن أن تكون فارغة أو أي شيء آخر.التخلص من ControlToValidate="A" في علامة على إصلاح المشكلة بالنسبة لي.

هتاف!

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