jquery 查找下一个TD的输入元素

xqk2d5yq  于 2023-06-22  发布在  jQuery
关注(0)|答案(2)|浏览(196)

在下一个td中查找input元素时遇到问题。我需要在tblCashSum的textbox的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);
}
juzqafwq

juzqafwq1#

你传递的是一个字符串,它是输入元素的值,你应该首先传递对象,注意你错过了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更快。
我在你的标记中找不到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);
});
kokeuurv

kokeuurv2#

您需要在输入的.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);
}

相关问题