我有一个table,行数可变,如下所示:

<tr class"hotel-room">
    <td class="cell1">
        <input type="hidden" class="hotel-id" name="input_01[label][row][progressive][id]" value="5893" />
        <input type="hidden" class="num-nights" name="input_01[label][row][progressive][nights]" value="2" />
        <select class="room-selection" name="input_01[label][row][progressive][]">
           <option value="etc"...>...options...</option>
        </select>
    </td>
    <td class="cell2">
        <input type="number" class="room-qty-input" name="input_01[label][row][progressive][]" />
    </td>
    <td class="cell3">
        <input type="text" class="room-price" name="input_01[label][row][progressive][]" />
    </td>
    <td class="buttons">
        stuff not relevant (two imgs, some text, more markup...)
    </td>
</tr>


'room-qty-input'数字输入字段中时,我使用tr检索容器td的父级var hotelRoom = $(this).closest('tr');

当我在上面的'tr'中传递函数时,我需要获取以下信息:


class="num-nights"第一个单元格中第二个隐藏字段的值
class="num-qty-input"中的数字输入字段的值


这些应该是整数,但以NaN形式返回。我试图使用以下方法确定其价值:


var numbRooms = $(hotelRoom).find('input[type="number"]');


要么


var numbNights = $(hotelRoom).find('.num-nights').val();


但是它们似乎没有返回正确的值。这是一个有点混乱的功能,也许我在做其他错误。想知道您是否有更好的方法来检索我正在寻找的数据。

最佳答案

将您所说的内容插入jsbin,我看不到任何错误。

$(document).ready(function () {
    $("input.room-qty-input")
        .on('focus', function () {
            var hotelRoom = $(this).closest('tr');
            var numbNights = hotelRoom.find('.num-nights').val();
            if (isNaN(numbNights)) console.log('NaN'); else console.log('is number');
            console.log(this, hotelRoom, numbNights);
    });
});

09-16 17:31