2012-10-23 12 views
5

avendo difficoltà a trovare l'elemento input nel prossimo td. Devo inserire un valore nella classe td della casella di testo di tblCashSum.Trovare l'elemento di input del prossimo TD

Tuttavia, se faccio la seguente:

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

Si legge indefinito.

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")' corretta? - è 'calc ($ (this) .val());' corretto? o si suppone che sia 'calc ($ (this));' –

+0

sì, ho fatto un errore lì, ma il calcolo della funzione non funziona ancora :( – goingsideways

risposta

6

Si passa una stringa che è il valore dell'elemento di ingresso, si deve prima passare l'oggetto, invece, si noti che avete perso la # per il selettore ID.

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

Quindi è possibile utilizzare parent e next metodi:

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); 
} 

Si prega di notare che se i tuoi elementi hanno gli attributi ID è possibile selezionare direttamente, che è più veloce di attraversamento del DOM.


Non riesco a trovare un elemento con ID di noteAmount nel markup, se si dispone di più elementi con lo stesso ID vostro codice non è più valido e si ottengono risultati imprevisti, si può anche provare il seguente :

$('.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

Mi piace lo schema di denominazione '$ formElement' per gli oggetti jQuery. – nrodic

+0

I Ho fatto un errore, ho solo passato l'oggetto e non il valore.Ho cambiato la domanda Mi dispiace – goingsideways

+0

Niceone undefined.Comprenderò anche il parseInt, molto bello.Grazie! – goingsideways

1

È necessario utilizzare .next() sulla .parent() dell'ingresso

Prova formElement.closest('td').next('td.tblCashSum')

O

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

//

anche $("noteAmount") non ha alcun senso ... suppone che sia $('[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

Ho fatto un errore , Ho solo passato l'oggetto e non il valore.Ho cambiato la domanda Mi dispiace – goingsideways

+2

Devi usare .next() sul .parent() di input –

Problemi correlati