2011-06-20 12 views
5

के माध्यम से आवश्यक फ़ील्ड सत्यापनकर्ता को आमंत्रित करें मेरे पास मेरे एएसपी.नेट फॉर्म में एक गैर मानक सबमिट बटन है।जावास्क्रिप्ट

<a class="button" href="#" onclick="this.blur();SubmitForm();"><span>Submit</span></a> 

इसके कारण, मेरे आवश्यक फ़ील्ड सत्यापनकर्ता को क्लाइंट पक्ष पर नहीं बुलाया जा रहा है। जावास्क्रिप्ट के माध्यम से आवश्यक फ़ील्ड सत्यापनकर्ता कैसे लागू किया जा सकता है?

वैकल्पिक रूप से ऐसा करने का एक बेहतर तरीका है जिसे मैं करने का प्रयास कर रहा हूं?

उत्तर

9

आप बनाया ग्राहक के पक्ष संदर्भ

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="ClientSide_Validation.aspx.cs" 
    Inherits="ClientSide_Validation" %> 

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
<head runat="server"> 
    <title></title> 
    <script type="text/javascript"> 
     function performCheck() { 

      if (Page_ClientValidate()) { 
      } 

     } 
    </script> 
</head> 
<body> 
    <form id="form1" runat="server"> 
    <div> 
     <asp:Label ID="lbl1" runat="server" Text="Please enter some value"></asp:Label> 
     <asp:TextBox ID="txtbox1" runat="server"></asp:TextBox> 
     <asp:RequiredFieldValidator ID="valReq" ControlToValidate="txtbox1" runat="server" 
      ErrorMessage="*" Display="Dynamic"> 
     </asp:RequiredFieldValidator> 
     <input type="button" id="btnValidate" value="Submit" onclick="performCheck()" /> 
     <a href="#" onclick="performCheck();">Validate</a> 
    </div> 
    </form> 
</body> 
</html> 
+0

यह तब समस्या पैदा करेगा जब आपके पास एक ही पृष्ठ पर एकाधिक सत्यापन समूह हो। – rahularyansharma

+0

http://stackoverflow.com/a/11548526/779158 को सत्यापन समूह के लिए यहां समस्या का उत्तर भी मिला। – rahularyansharma

3

client side api for ASP.Net validators पर एक नज़र डालें। पृष्ठ पर सभी मान्यताओं को Array में Page_Validators के माध्यम से उजागर किया गया है। आप इसे आमंत्रित करने के लिए एक वैधकर्ता पर ValidatorValidate(validator) पर कॉल कर सकते हैं। तो, पेज आप कर सकते थे पर सभी प्रमाणकों के आह्वान करने के लिए:

Page_Validators.forEach(ValidatorValidate); 

वैसे, पुराने ब्राउज़र you'll need to extend Array में Array.forEach उपयोग करने के लिए।

7

Page_ClientValidate फार्म पर और @ gilly3 के रूप में सभी प्रमाणकों के लिए मान्यता से चलाता है के लिए बाहर निम्नलिखित कोड का टुकड़ा this.Check के लिए Page_ClientValidate नामित समारोह में उपयोग कर सकते हैं बाहर से पता चलता आप कर सकते हैं संग्रह को लूप करके और ValidatorValidate(validator)

पर कॉल करके सभी को भी मान्य करें, हालांकि यदि आप केवल एक विशेष सत्यापनकर्ता को सत्यापित करना चाहते हैं तो आपको केवल एक आइटम के लिए ValidatorValidate(validator) पर कॉल करने की आवश्यकता है।

वैधकर्ता तर्क को एक DOM ऑब्जेक्ट होना आवश्यक है जो प्राप्त करने में मुश्किल हो सकता है क्योंकि यदि आप मास्टर पेज या उपयोगकर्ता नियंत्रण का उपयोग कर रहे हैं तो तत्व आईडी मार्क अप में निर्दिष्ट से अलग हो सकती है।

उदा।

<asp:RequiredFieldValidator ID="rfvCampaignStartDate" runat="server" .../> 

<span id="cph_0_rfvCampaignFile" ...> 

मैं इस

ValidatorValidate($('[id$="rfvCampaignFile"]').get(0)); 

ASP.NET की तरह एक jQuery चयनकर्ता का उपयोग करके अपनी परियोजनाओं में से एक में यह चारों ओर हो गया केवल एक अनूठा नाम बनाने के लिए आईडी उपसर्ग हो जाता है मैं "rfvCampaignFile" में समाप्त होने वाली किसी भी आईडी से मेल खाने के लिए चयनकर्ता का id$= भाग का उपयोग कर सकता हूं क्योंकि मैंने वेबसाइट को लिखा है, मुझे पता है कि यह अन्य नियंत्रणों के साथ संघर्ष नहीं करेगा। आखिरकार मैं पहले से ही DOM ऑब्जेक्ट संदर्भ (और केवल मेरे मामले में) DOM ऑब्जेक्ट मिलान करने के लिए .get(0) का उपयोग करता हूं।

1

आप jQuery का उपयोग कर रहे हैं तो "स्थिर" एक ASP.NET नियंत्रण ClientIDMode = सेट और आप अपने कोड को पढ़ने के लिए आसान बनाने के कर सकते हैं ...

ValidatorValidate ($ ('# myControl'));

या कुछ बहुत समान है।