【问题标题】:Select different type of inputs within cells in a .closest('tr')在 .closest('tr') 的单元格中选择不同类型的输入
【发布时间】:2017-01-02 07:16:40
【问题描述】:

我有一个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' 数字输入字段中时,我使用 var hotelRoom = $(this).closest('tr'); 检索容器 td 的父 tr

虽然我是通过上述'tr' 的函数,但我需要得到以下信息:

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

这些应该是整数,但它们返回为 NaN。我尝试使用以下方法确定它们的价值:

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

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

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

【问题讨论】:

  • 您在所有 name 属性上缺少结束 ",这可能导致 value 无法正确解析。
  • 对不起,错字不在实际代码中;就在此处的转录中;实际的代码有点长,但为了清楚起见,我对其进行了修剪——在这个过程中我错过了那句话;它没有解决问题,但还是感谢您指出

标签: javascript input html-table closest


【解决方案1】:

将你所说的插入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);
    });
});

【讨论】:

  • 对不起,我实际上并没有复制粘贴我的实际代码,因为那更长;在转录它时,我一定错过了那个引号 - 感谢您指出,虽然我还没有解决我的主要问题
  • @Fulvio 检查我的代码...我看不出您使用的方法有什么问题,但您没有发布实际的 JavaScript 代码,所以我根据您所说的编写代码.
  • 感谢 saluce - 实际上我的计算是错误的,因为我在 numbRooms = $(hotelRoom).find('input[type="number"]'); 末尾省略了 .val我在另一个 var 中寻找 numbRooms.val ,但这没有用,并且由于其中一个值返回 NaN 而导致计算混乱。我担心最接近('tr')不是一种安全的方法,但事实证明它已经足够好了。再次感谢
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-11-21
相关资源
最近更新 更多