如何获取下一个文本输入的值?

时间:2013-11-18 23:16:46

标签: javascript

我在IE 7中正在做我的项目,我想知道每当我点击它之前的标签时如何获取文本输入的值。

这是我的DOM:

<table>
<tr>
<td>
 <label id="lbl_name">Name:</label>
</td>
<td>
 <input type="text" id="name" />
</td>
</tr>
</table>

我尝试使用nextSibling,但我得到一个空白值。

document.getElementById('lbl_name').attachEvent('onclick', function () {
 alert(document.activeElement.nextSibling.nodeValue);
});

请帮忙吗?如果您可以以非jquery方式共享代码。感谢

3 个答案:

答案 0 :(得分:4)

输入不是标签的兄弟。要使用这种方法,您需要:

  1. 获取父节点(td)
  2. 获得该节点的下一个兄弟
  3. 获取该节点的第一个输入后代
  4. 但是,此标签目前无用,因为它根本与输入无关。如果您修复了标记:

    <label id="lbl_name" for="name">Name:</label>
    

    你可以:

    document.getElementById( this.getAttribute('for') ).value
    

答案 1 :(得分:2)

那是因为这个领域不是兄弟姐妹。

你必须去找父母,兄弟姐妹,然后是第一个孩子:

document.activeElement.parentNode.nextSibling.children[0];

也就是说,如果您之间没有文本节点

答案 2 :(得分:0)

我修改了@Kenneth的回答,这就是它的工作原理:

document.getElementById('lbl_name').attachEvent('onclick', function () { alert(document.activeElement.nextSibling.children[0].value);
});

document.activeElement是我点击的'标签',nextSibling将是<td>标记,其中包含<input>元素,children[0]是{ {1}}。在其上添加<input type="text">将返回其中的文本。

感谢所有人的投入= D