如何从td内部获取输入文本值

时间:2010-03-30 15:25:33

标签: jquery

<tr>
 <td>
      <input type="text" name="desc[]">
 </td>
 <td>
      <input type="text" name="duration[]">
 </td>
 <td>
      <input type="text" name="start[]" class="start">
 </td>
 <td>
       <input type="text" name="wait[]">
 </td>
 <td>
       <input type="text" name="end[]">
 </td>
 <td>
      <input type="text" name="phone[]">
 </td>
</tr>

我有这么多行。我需要在输入名称为start的td上的keyup事件中获取所有tds的值(我还需要避免使用desc []和phone []的值)。因为他们很多我不能使用id,所以需要帮助使用jquery的父子方法。

我能够在上面提到的td上的keyup事件上达到父tr,但是无法访问其他tds中的输入字段的值。我使用的jquery代码

$(document).ready(function(){
    $(".start").keyup(function(){
        alert($(this).parent().get(-3).tagName);
    })
});

4 个答案:

答案 0 :(得分:36)

啊我觉得现在明白了。看看这真的是你想要的:

$(".start").keyup(function(){
    $(this).closest('tr').find("input").each(function() {
        alert(this.value)
    });
});

这将为您提供一行的所有输入值。

<强>更新
要获得的所有元素,您可以使用:not()

$(this).closest('tr').find("input:not([name^=desc][name^=phone])").each(function() {
     alert(this.value)
});

实际上,我并不是100%确定它是否以这种方式工作,也许你必须使用两个not而不是这两个条件。

答案 1 :(得分:1)

var values = {};
$('td input').each(function(){
  values[$(this).attr('name')] = $(this).val();
}

尚未测试,但应该这样做......

答案 2 :(得分:0)

我很难弄清楚你到底在找什么,所以希望我不会偏离基础。

我假设您的意思是当输入中的键盘事件发生在“start”类时,您希望得到相邻&lt; td&gt; s中所有输入的值:

    $('.start').keyup(function() {
        var otherInputs = $(this).parents('td').siblings().find('input');

        for(var i = 0; i < otherInputs.length; i++) {
            alert($(otherInputs[i]).val());
        }
        return false;
    });

答案 3 :(得分:0)

也许这会有所帮助。

  

var inputVal = $(this).closest('tr')。find(“ td:eq(x)input”)。val();