2013-07-30 2 views
0

У меня есть table с переменным количеством строк, например так:Выбрать другой тип входов внутри клеток в .closest («тр»)

<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();

Но они, похоже, не возвращает правильное значение. Это в немного беспорядочной функции, возможно, я делаю что-то еще неправильно. Хотелось бы узнать, есть ли у вас лучшие методы для получения данных, которые я ищу.

+1

Вы упускаете закрытие '" 'на все' name' атрибуты, которые могут быть сделать 'value' быть не корректно распознаны – freejosh

+0

извините ребята опечатка не в самом коде,. Как раз в транскрипция здесь, фактический код немного длиннее, но я подрезал его для ясности - в процессе я пропустил эту цитату, это не исправление проблемы, но спасибо за указание в любом случае – unfulvio

ответ

2

Подключив то, что вы сказали, вы сделали в 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); 
    }); 
}); 
+0

жаль, что я на самом деле не копировал свой реальный код, потому что это скорее длиннее, а расшифровывая его, я, должно быть, пропустил эту цитату - спасибо, что указал, хотя я до сих пор не решил свою основную проблему. – unfulvio

+0

@Fulvio проверить мой код ... Я не вижу ничего плохого в методе вы использовали, но вы не опубликовали свой фактический код JavaScript, поэтому я написал код на основе о том, что вы сказали, что сделали. – saluce

+0

спасибо saluce - на самом деле мои расчеты были неправильными, потому что я был опускаю .val в конце numbRooms = $ (hotelRoom) .find ('input [type = "number"]'); Я искал numbRooms.val в другом var, но это не сработало и испортило вычисления как одно из значений, возвращаемых NaN. Я был обеспокоен тем, что самый близкий («tr») не был безопасным методом, но, оказывается, он достаточно хорош. еще раз спасибо – unfulvio

Смежные вопросы