2010-12-14 5 views
16

मेरे पास एक कीडाउन ईवेंट है जिसका उपयोग मैं तालिका में एक खाली पंक्ति जोड़ने के लिए कर रहा हूं। लेकिन जब मैं कर्सर तालिका की आखिरी पंक्ति में होता हूं तो कुंजीडाउन ईवेंट तब होता है जब मैं केवल नई पंक्ति को जोड़ना चाहता हूं।कैसे पता लगाएं कि आप एक HTML तालिका के अंतिम पंक्ति में वर्तमान में कर रहे हैं?

यह मेरा वर्तमान jQuery ईवेंट है। .glCreditValue एक इनपुट टेक्स्टबॉक्स का वर्ग है जो तालिका पंक्ति के अंतिम टीडी में रहता है। तो जब उपयोगकर्ता उस इनपुट से बाहर निकलता है, यदि इनपुट के अंदर इनपुट टीडी है, तो तालिका की आखिरी पंक्ति में, मैं एक नई पंक्ति जोड़ना चाहता हूं।

चूंकि तालिका डेटा गतिशील रूप से उत्पन्न होता है, प्रत्येक पंक्ति के अंतिम टीडी में कक्षा के साथ एक इनपुट टेक्स्टबॉक्स होता है .glCreditValue।

$(".glCreditValue").keydown(function(event) { 
     var keycode = event.keyCode; 
     if (keycode == 9) { 
      //HERE i would like to make sure that i'm in the last row of the table 
      AddNewRow(); 
     } 
    }); 

मैं टीआर का उपयोग करने के कोशिश कर रहा हूँ: पिछले चयनकर्ता, लेकिन मुझे यकीन है कि काफी जहां यहां से जाने के लिए नहीं कर रहा हूँ।

+0

क्या आप अंतिम पंक्ति या केवल अंतिम पंक्ति के अंतिम कॉलम पर क्लिक को संभालना चाहते हैं? – Emmett

+0

बस अंतिम स्तंभ है, जिसके कारण मैं केवल कि .glCreditValue keydown को निर्दिष्ट कर रहा हूँ। प्रत्येक पंक्ति के अंतिम टीडी में केवल इनपुट टेक्स्टबॉक्स में उस वर्ग को असाइन किया गया है। –

उत्तर

29

ऐसा करने के लिए कुछ तरीके, उदाहरण के लिए आप .closest() माता पिता <tr> जांच कर सकता है और देखते हैं अगर यह .is() एक :last-child, इस तरह:

$(".glCreditValue").keydown(function(event) { 
    if (event.which == 9 && $(this).closest("tr").is(":last-child")) { 
     AddNewRow(); 
    } 
}); 
+0

कि चाल किया! धन्यवाद! मुझे लगता है कि लगभग 6 मिनट में अपने जवाब के रूप में 'स्वीकार' जब यह मुझे देता है, haha। –

+0

@ माइकल - आपका स्वागत है :) –

+0

@ निक हेट एक पुराने प्रश्न को खत्म करने के लिए, लेकिन क्या यह सशर्त के लिए शिफ्ट-कुंजी के लिए चेक जोड़ने के लिए उपयोगी/सलाह दी जाएगी? यही कारण है, सशर्त पर आरंभ होने से एक "टैब में बाईं ओर" को रोकने के लिए कोई है? बहुत बढ़िया उत्तर, परवाह किए बिना ...:] –

4

एक तरह से की भूमि के ऊपर बिना यह करने के लिए एक चयनकर्ता को चलाने के लिए बस the .closest() row प्राप्त करें, फिर the .next() element पर जाएं और its .length property का परीक्षण करें।

यदि आप पिछले <tr> पर थे तो यह 0 होगा।

if(!$(this).closest('tr').next().length) { 
    // was the last row 
} 
संबंधित मुद्दे