如何使用jQuery更改列文本框值时获取表行索引

时间:2015-06-16 16:03:00

标签: javascript jquery

我希望在表格价格文本框值更改时获取行索引和文本框值。目前,我得到了一些未定义的值。

HTML

<table class="table table-striped">
    <thead>
        <tr>                   
            <th>Product</th>                              
            <th>Price</th>
        </tr>
    </thead>
    <tbody>
        <tr>
            <td>
                <input type="text" class="form-control product">
            </td> 
            <td>
                <input type="text" oninput="javascript:GetValue(this);" class="form-control price">
            </td>
        </tr>
    </tbody> 
</table>

的JavaScript

function GetValue(oTextBox) {
    var price = oTextBox.value;
    var product = oTextBox.parent().prev().innerHTML.value;
    var rowindex = oTextBox.closest('tr').index();
}

我收到此错误:

  

TypeError:oTextBox.parent不是函数   var product = oTextBox.parent()。prev()。innerHTML.value;

2 个答案:

答案 0 :(得分:1)

用$(oTextBox)替换函数中的oTextBox然后你可以使用html()而不是innerHTML,就像这样

$(oTextBox).parent().prev().html()

答案 1 :(得分:1)

您需要在$中包装oTextBox才能使用jQuery方法。这是因为oTextBox ...或... this是一个DOM元素,而不是一个jQuery对象。因此:

var product = oTextBox.parent().prev().innerHTML.value;

应该是:

var product = $(oTextBox).parent().prev().find('input').val();

var rowindex = oTextBox.closest('tr').index();

应该是:

var rowindex = $(oTextBox).closest('tr').index();

<强> SUGGESTION

我鼓励你不要使用内联JS:

<input type="text" class="form-control price">

然后你的jQuery将是:

$(function() {
    $('input.price').on('input', function() {
        var price = this.value;
        var product = $(this).parent().prev().find('input').val();
        var rowindex = $(this).closest('tr').index();
        //....
    });
});