2010-01-31 16 views
5

मेरे पास मुद्रा विनिमय अनुरोधों के लिए ASP.NET फ़ॉर्म है। वहां दो टेक्स्ट फ़ील्ड्स हैं: राशि-स्रोत और राशि-लक्ष्य।यह सुनिश्चित करने के लिए कि उपयोगकर्ता दो आवश्यक फ़ील्ड में से एक को भरता है

उनमें से एक भरा होना चाहिए और केवल एक ही होना चाहिए।

लागू होने पर वैलिडेटर का उपयोग करके इसे कैसे कार्यान्वित करें?

उत्तर

13

आप इस के लिए कस्टम प्रमाणकों उपयोग कर सकते हैं:

<asp:Textbox id="textbox1" runat="server" /> 
<asp:CustomValidator id="valCustom" runat="server" 
    ControlToValidate="textbox1" 
    ClientValidationFunction="ClientValidate" 
    OnServerValidate="ServerValidate" 
    ErrorMessage="*You can only enter 1" display="dynamic">* 
</asp:CustomValidator> 

<asp:Textbox id="textbox2" runat="server" /> 
<asp:CustomValidator id="valCustom2" runat="server" 
    ControlToValidate="textbox2" 
    ClientValidationFunction="ClientValidate" 
    OnServerValidate="ServerValidate" 
    ErrorMessage="*You can only enter 1" display="dynamic">* 
</asp:CustomValidator> 

<script language="Javascript"> 
    function ClientValidate(source, arguments) 
    { 
    var tb1 = document.getElementById("<%=textbox1.ClientID %>").value; 
    var tb2 = document.getElementById("<%=textbox2.ClientID %>").value; 
    if (tb1 && tb2 || (!tb1 && !tb2)){ 
     arguments.IsValid = false; 
    } else { 
     arguments.IsValid = true; 
    } 
    } 
</script> 

सर्वर साइड:

protected void ServerValidate(object sender, ServerValidateEventArgs args) 
{ 
    if(string.isNullOrEmpty(textbox1.Text) && string.isNullOrEmpty(textbox2.Text)) 
    args.IsValid = false; 
    else if(!string.isNullOrEmpty(textbox1.Text) && !string.isNullOrEmpty(textbox2.Text)) 
    args.IsValid = false; 
    else 
    args.IsValid = true; 
} 

आप उपयोग कर रहे हैं jQuery कृपया टिप्पणी ... यह सब अधिक स्वच्छ हो सकता है।

+1

उदाहरण कोड कॉपी करने पर बस सावधान रहें - "dispaly" "प्रदर्शन" होना चाहिए (दो बार होता है) – DJDave

+0

मुझे लगता है कि यह खाली नहीं है यदि यह खाली है: यदि टेक्स्ट बॉक्स खाली है तो इसका कस्टम सत्यापनकर्ता आग नहीं करता है । – ChrisW

+0

मुझे लगता है कि यह काम खाली होने पर (सर्वर पक्ष पर) बनाने के लिए, मुझे किसी भी 'ControlVoValidate' प्रॉपर्टी के बिना एक' कस्टम वैलिडेटेटर 'उदाहरण का उपयोग करने की आवश्यकता है। – ChrisW

1

मैं एक कस्टम वैलिडेटर लागू करता हूं और इसके साथ टेक्स्टबॉक्स दोनों को सजाता हूं। यदि दोनों भरे हुए हैं, तो दोनों एक त्रुटि स्थिति में हैं।

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