2012-10-23 26 views
5

होने मुसीबत अगले td में input तत्व को खोजने का इनपुट तत्व ढूँढना। मैं जगह tblCashSum के पाठ बॉक्स के td class में कोई मान प्राप्त करने की आवश्यकता।अगले टीडी

हालांकि, अगर मैं निम्न कार्य करें:

alert(formElement.nextAll('td.tblCashSum').find('input.cashSum').val()); 

यह अपरिभाषित पढ़ता है।

HTML:

<tr> 
    <td class='tblCashType'>100</td> 
    <td class='tblCashAmount'><asp:TextBox class="inputBox" ID="noteAmount100" runat="server"></asp:TextBox></td> 
    <td class='tblCashSum'><asp:TextBox class="inputBoxDisabled cashSum" ReadOnly="true" runat="server" ID="cashSum100"></asp:TextBox></td> 
</tr> 

Jquery:

$("noteAmount").blur(function(){ 
calc($(this)); 
}); 

function calc(formElement) 
{ 
    a = formElement.val(); 
    b = formElement.closest('td').siblings('td.tblCashType').text(); 
    x = a * b; 
    formElement.nextAll('td.tblCashSum').find('input.cashSum').val(x); 
} 
+1

'$ (" noteAmount ")' सही है? 'सही; -' calc ($ (this) .val()) है? । ' –

+0

हाँ, मैं कहीं कोई गलती की, लेकिन समारोह calc अभी भी काम नहीं कर रहा है :( – goingsideways

उत्तर

6

आप एक स्ट्रिंग जो इनपुट तत्व का मान है से गुजर रहे हैं, तो आप पहले के बजाय वस्तु पास करना चाहिए, ध्यान दें कि आप चूक गए आईडी चयनकर्ता के लिए #

$("#noteAmount").blur(function(){ 
    calc($(this)); 
}); 

तो फिर तुम parent और next तरीकों का उपयोग कर सकते हैं:

function calc($formElement) { 
    a = parseInt($formElement.val(), 10); 
    b = parseInt($formElement.closest('td').siblings('td.tblCashType').text(), 10); 
    x = a * b; 
    $formElement.parent().next().find('input.cashSum').val(x); 
} 

कृपया ध्यान दें कि अपने तत्वों अगर आईडी गुण आप उन्हें सीधे जो डोम traversing की तुलना में तेजी है चुन सकते हैं।


मैं अपने मार्कअप में noteAmount की ID वाला तत्व नहीं मिल सकता है, अगर आप एक ही आईडी से कई तत्व अपने मार्कअप अमान्य हो जाता है और आप अप्रत्याशित परिणाम मिल जाएगा, आप भी यह कर सकते :

$('.inputBox').blur(function(){ 
    a = this.value 
    $this = $(this); 
    b = $this.parent().prev().text(); 
    x = parseInt(a, 10) * parseInt(b, 10); 
    $this.parent().next().find('input.cashSum').val(x); 
}); 
+2

मुझे पसंद है' $ formElement' jQuery वस्तुओं के लिए नामकरण योजना – nrodic

+0

मैं, या यह 'होने के लिए calc ($ (this)) माना जाता है एक गलती की, मैं केवल वस्तु को पास करता हूं, मूल्य नहीं। मैंने सवाल बदल दिया है। क्षमा करें – goingsideways

+0

नाइसोन अपरिभाषित। मैं parseInt भी शामिल करूंगा, बहुत अच्छा। धन्यवाद! – goingsideways

1

आप इनपुट

की .parent() पर .next() उपयोग करने की आवश्यकता का प्रयास करें formElement.closest('td').next('td.tblCashSum')

या

formElement.parent().next('td.tblCashSum') 

//

इसके अलावा $("noteAmount") कोई मतलब नहीं है ... होना चाहिए $('[id*="noteAmount"]')

$('[id*="noteAmount"]').blur(function(){ 
calc($(this)); 
}); 

function calc(formElement) 
{ 
    a = formElement.val(); 
    b = formElement.closest('td').siblings('td.tblCashType').text(); 
    x = a * b; 
    formElement.closest('td').next('td.tblCashSum').find('input.cashSum').val(x); 
} 
+0

मैंने गलती की , मैं सिर्फ वस्तु और नहीं मान पास है। मैं प्रश्न बदल दिया है। खेद – goingsideways

+2

आप .next() इनपुट के .parent पर() का उपयोग करने की आवश्यकता है –

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