2010-10-12 13 views
6

मेरे पास एएसपीनेट वेबफॉर्म पर तीन टेक्स्टबॉक्स हैं, मैं यह सुनिश्चित करने के लिए एक आवश्यक फ़ील्ड सत्यापनकर्ता का उपयोग कैसे कर सकता/सकती हूं कि उनमें से कम से कम एक में टेक्स्ट हो?एएसपीनेट के लिए कम से कम एक टेक्स्टबॉक्स के लिए फ़ील्ड सत्यापनकर्ता आवश्यक है

+0

[asp.net मान्य टेक्स्टबॉक्स के संभावित डुप्लिकेट - कम से कम एक टेक्स्ट बॉक्स में डेटा होना चाहिए] (http://stackoverflow.com/questions/1443545/asp-net-validate-textbox-at-least-one- टेक्स्ट-बॉक्स-जरूरी है-डेटा-इन) –

उत्तर

15

मैं इस तरह एक CustomFieldValidator का प्रयोग करेंगे:

<asp:CustomValidator runat="server" 
     ID="MyCustomValidator" 
     ValidationGroup="YOUR_VALIDATION_GROUP_NAME" 
     OnServerValidate="MyCustomValidator_ServerValidate" 
     ErrorMessage="At least one textbox needs to be filled in." /> 

और फिर अपने codebehind में तुम हो:

protected void MyCustomValidator_ServerValidate(object source, ServerValidateEventArgs args) 
{ 
    if (/* one of three textboxes has text*/) 
     args.IsValid = true; 
    else 
     args.IsValid = false; 
} 

आप भी इस मान्यता के लिए एक क्लाइंट-साइड घटक जोड़ सकते हैं, और यह कर AJAX टूलकिट के ValidatorCalloutExtender नियंत्रण के साथ इसे विस्तार से सेक्सी।

+0

मुझे यह पसंद नहीं आया क्योंकि यह एक पोस्टबैक है इसलिए मैंने क्लाइंट आईडीमोड = "स्थिर" और जेएस फ़ंक्शन में मानों को हार्ड कोडिंग करने के लिए बस समाप्त कर दिया। मैं वास्तव में कोई त्रुटि संदेश या कुछ भी करने में दिलचस्पी नहीं थी; मैं बस बटन कुछ भी नहीं करना चाहता था। कोड के लिए धन्यवाद। यह पूरी तरह से काम करता है, यह सिर्फ कस्टम वैलिडेटर का उपयोग गलत विकल्प था। मेरी गलती कौन सा है, तुम्हारा नहीं। – Shawn

+0

मैंने पाया कि यह सत्यापन प्रमाणीकरण समूह के साथ सत्यापन को ट्रिगर नहीं करेगा। एक बार मैंने इसे बाहर निकाला, यह एक आकर्षण की तरह काम किया। – techturtle

13

मुझे नहीं लगता कि एक आवश्यक फ़ील्ड वैलिडेटर आपकी आवश्यकताओं को फिट करता है। मैं CustomValidator के साथ अपने किसी भी फ़ील्ड को सौंपा गया हूं और इसे ठीक होने पर मैन्युअल रूप से जांच सकता हूं।

<script> 
    function doCustomValidate(source, args) { 

     args.IsValid = false; 

     if (document.getElementById('<% =TextBox1.ClientID %>').value.length > 0) { 
      args.IsValid = true; 
     } 
     if (document.getElementById('<% =TextBox2.ClientID %>').value.length > 0) { 
      args.IsValid = true; 
     } 
     if (document.getElementById('<% =TextBox3.ClientID %>').value.length > 0) { 
      args.IsValid = true; 
     } 
    } 
</script> 

<asp:TextBox ID="TextBox1" runat="server"></asp:TextBox> 
<asp:CustomValidator ID="CustomValidator1" runat="server" 
     ErrorMessage="have to fill at least 1 field" 
     ControlToValidate="TextBox1" 
     ClientValidationFunction="doCustomValidate" 
     ValidateEmptyText="true" ></asp:CustomValidator><br /> 
<asp:TextBox ID="TextBox2" runat="server"></asp:TextBox><br /> 
<asp:TextBox ID="TextBox3" runat="server"></asp:TextBox><br /> 

ValidateEmptyText="true" स्थापित करने के लिए भूल जाते हैं के रूप में डिफ़ॉल्ट रिक्त फ़ील्ड को छोड़ने के लिए है मत करो। सुनिश्चित करें कि आप एक समान सर्वर-साइड सत्यापन विधि भी बनाते हैं।

संबंधित मुद्दे