5

input次の要素を見つけるのに問題がありtdます。tblCashSumのテキストボックスのtdクラスに値を配置する必要があります。

ただし、次のことを行うと、次のようになります。

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

undefinedを読み取ります。

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

2 に答える 2

6

#input要素の値である文字列を渡す場合は、代わりに最初にオブジェクトを渡す必要があります。IDセレクターのを見逃していることに注意してください。

$("#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);
}

要素にID属性がある場合は、それらを直接選択できることに注意してください。これは、DOMをトラバースするよりも高速です。


IDが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);
});
于 2012-10-23T22:12:48.813 に答える
1

入力ので使用.next()する必要があります.parent()

試す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);
}
于 2012-10-23T22:15:13.297 に答える