2015-05-20 8 views
6

मैंने निम्नलिखित रिकर्सिव इनपुट सत्यापनकर्ता लिखा है और यह मेरे लिए काम करता है। क्या प्रत्येक डोम तत्व पर जाने का एक बेहतर तरीका है और जांचें कि यह इनपुट फ़ील्ड है या नहीं?एचटीएमएल इनपुट तत्वों को दोबारा सत्यापित करने

function formValidator(parent) 
{ 
    //base case no children 
    if(parent.children().length == 0) 
     return 

    //recurse through each childs' child 
    parent.children().each(function(){ 
     formValidator($(this)); 

    /** 
    * Work : check if this node is an input node 
    */ 
     if($(this).is("input")) 
     { 
      var type = $(this).attr('type'); 

      if(type =="text") 
       //do work bro 

     } 

    });//end for each 

} 
+2

यह सवाल [कोड समीक्षा स्टैक एक्सचेंज] (http://codereview.stackexchange.com) के लिए बेहतर हो सकता है क्योंकि आपके प्रश्न की प्रकृति किसी समस्या से मदद के बजाय सुधार की तलाश है। –

+0

ओह, मुझे यह भी पता नहीं था कि कोड समीक्षा एक चीज थी। क्या मैं अपनी पोस्ट वहां ले जा सकता हूं या कोई इसे मेरे लिए ले जा सकता है? – dimlee

+0

आप यहां अपनी पोस्ट हटा सकते हैं और इसे वहां (दोबारा) पोस्ट कर सकते हैं, या मॉडरेटर के ध्यान के लिए इसे ध्वजांकित कर सकते हैं, इसे माइग्रेट करने के लिए कह रहे हैं (शायद इससे बचें क्योंकि यह अधिक काम करने वाले मॉडरेटर के लिए अधिक काम है)। - अब आपके पास एक जवाब है जो मुझे नहीं लगता कि ** ** इसे हटा सकते हैं। –

उत्तर

4

तो द्वारा बेहतर आप कम वर्बोज़ मतलब है, यह बराबर है कार्यात्मक

parent.find('*').each(function(){ 
    /** 
    * Work : check if this node is an input node 
    */ 
     if($(this).is("input")) 
     { 
      var type = $(this).attr('type'); 

      if(type =="text") 
       //do work bro 

     } 

    });//end for each 

सूचना वहाँ प्रत्यावर्तन की कोई आवश्यकता नहीं यहाँ है कि क्योंकि

parent.find('*') 

*(all-selector) उपयोग करता है। यह सभी बच्चों और घोंसले बच्चों को मिलेगा। तो आप भी

if($(this).is("input")) 
+0

मुझे यह जवाब पसंद है, लेकिन मैं हल्के से उत्सुक हूं जो अधिक कुशल होगा। – dimlee

+0

@ डिमली, प्रदर्शन लाभ – AmmarCSE

+0

के लिए मेरा अद्यतन उत्तर देखें, आप 'parent'find (' input: text ') के साथ' टाइप' चेक से बच सकते हैं ... ' –

3
के लिए जाँच करने के लिए नहीं होगा

अद्यतन

प्रदर्शन में सुधार करने के लिए, आप refactor कर सकते हैं इसके बाद के संस्करण

को
parent.find('input[type="text"]').each(function(){ 
     var type = $(this).attr('type'); 

       //if(type =="text") 
        //above no longer needed 
     });//end for each 

यह सब नेस्ट input तत्वों मिल जाएगा

मैं एक संक्षिप्त चयनकर्ता का उपयोग करूंगा:

parent.children().find("input:text").each(function(){ 
    // Valid $(this) element to validate 
}); 
+0

इसमें ऐसे इनपुट शामिल नहीं हैं जो तत्काल 'माता-पिता' के बच्चे हैं, जो ओपी के कोड हैंडल ('अगर ($ (यह) .is (" इनपुट "))')। आप 'बच्चों()' विधि को हटाकर इसे ठीक कर सकते हैं। –

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