2012-10-23 1 views
5

苦労次tdinput要素を見つけるの入力要素を見つけます。私はtblCashSumのテキストボックスのTDクラスに値を置く取得する必要があります。次のTD

しかし、私は次の操作を実行した場合:

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

あなたが入力要素の値である文字列を渡している、あなたはまず、あなたが見逃していることに注意して、代わりにオブジェクトを渡す必要がありますIDセレクタの場合は#です。

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

次にあなたがparentnextメソッドを使用することができます。

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

あなたの要素を持っている場合はIDを使用して、DOMを横断するよりも高速であるそれらを直接選択することができます属性ますのでご注意ください。


私はあなたのマークアップでnoteAmountのIDを持つ要素を見つけることができない、あなたが同じ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

I、またはそれは 'CALC($(この))ことになっていますミスを犯し、私は唯一のオブジェクトではなく値を渡してください。私は、質問を変更しました。申し訳ありません – goingsideways

+0

Niceoneは未定義。私は、また非常に素晴らしいのparseIntを組み込む予定。ありがとう! – goingsideways

1

あなたは試してみてください入力

.parent().next()を使用する必要がformElement.closest('td').next('td.tblCashSum')

OR

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

私はミスを犯しました、私は唯一のオブジェクトではなく値を渡してください。私は質問を変更しました。あなたは(.next使用する必要があります申し訳ありません – goingsideways

+2

).parent上()入力の –

関連する問題