2013-07-02 8 views
5

क्या होता है जब आप Button को DefaultButton के रूप में उपयोग करने के लिए ASP.NET Panel में उपयोग करते हैं? मैं समझता हूं कि एएसपी.नेट पैनल की सामग्री को div पर प्रस्तुत करेगा और व्यूस्टेट में सामान का एक गुच्छा पास करेगा। क्या व्यूस्टेट के अंदर जावास्क्रिप्ट है जो प्रस्तुत बटन के क्लिक ईवेंट को संभालता है? मैंने सोचा था कि व्यूस्टेट बस यही था - राज्य के बारे में जानकारी। यह कैसे काम करता है?पैनल की डिफ़ॉल्ट बटन संपत्ति कैसे काम करती है?

+0

व्यूस्टेट केवल अनुरोधों के बीच जानकारी को बनाए रखने के लिए एएसपी.नेट पृष्ठों के लिए एक माध्यम है (इसे एक पृष्ठ से दूसरे में बोलने के लिए) - यह क्लाइंट साइड जावास्क्रिप्ट को प्रभावित नहीं करता है या किसी भी को लागू नहीं करता है –

उत्तर

11

आप व्यूस्टेट के बारे में सही हैं। यह पेज और नियंत्रण मूल्य रखने के लिए डिज़ाइन किया गया है। यही है, उनके राज्य। आप इसकी पुष्टि कर सकते हैं here

डिफ़ॉल्ट बटन के बारे में, कोई जादू नहीं है। ENTER कुंजी ईवेंट को बाध्य करने के लिए div में जावास्क्रिप्ट जोड़ा गया है।

चलो इसे जांचें! यह कोड:

<asp:Panel ID="panel" runat="server" DefaultButton="button"> 
    <asp:Button ID="button" runat="server" Text="this is the button" /> 
</asp:Panel> 

यह करने के लिए प्रदान की गई है:

<div id="panel" onkeypress="javascript:return WebForm_FireDefaultButton(event, 'button')"> 
    <input type="submit" name="button" value="this is the button" id="button">   
</div> 

यह जावास्क्रिप्ट WebForms इंजन द्वारा उत्पन्न होता है, लेकिन हम इसके लिए देख सकते हैं, यदि आप उत्सुक हैं:

function WebForm_FireDefaultButton(event, target) { 
    if (event.keyCode == 13) { 
     var src = event.srcElement || event.target; 
     if (!src || (src.tagName.toLowerCase() != "textarea")) { 
      var defaultButton; 
      if (__nonMSDOMBrowser) { 
       defaultButton = document.getElementById(target); 
      } 
      else { 
       defaultButton = document.all[target]; 
      } 
      if (defaultButton && typeof(defaultButton.click) != "undefined") { 
       defaultButton.click(); 
       event.cancelBubble = true; 
       if (event.stopPropagation) event.stopPropagation(); 
       return false; 
      } 
     } 
    } 
    return true; 
} 

ध्यान दें कि वर्तमान में केंद्रित नियंत्रण textarea है तो यह कैसे परीक्षण करता है। ऐसा इसलिए है क्योंकि textarea के अंदर एक प्रविष्टि अधिकतर एक नई लाइन है, सबमिट नहीं।

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