Javascript 如何获取下一个文本输入的值?
我正在用IE7做我的项目,我想知道当我点击之前的标签时,如何获得文本输入的值 这是我的DOM:Javascript 如何获取下一个文本输入的值?,javascript,Javascript,我正在用IE7做我的项目,我想知道当我点击之前的标签时,如何获得文本输入的值 这是我的DOM: <table> <tr> <td> <label id="lbl_name">Name:</label> </td> <td> <input type="text" id="name" /> </td> </tr> </table> 需要帮忙吗?如果可以以非jque
<table>
<tr>
<td>
<label id="lbl_name">Name:</label>
</td>
<td>
<input type="text" id="name" />
</td>
</tr>
</table>
需要帮忙吗?如果可以以非jquery方式共享代码。谢谢输入不是标签的同级。要使用该方法,您需要:
<label id="lbl_name" for="name">Name:</label>
输入不是标签的同级。要使用该方法,您需要:
<label id="lbl_name" for="name">Name:</label>
这是因为该字段不是兄弟 你必须先找到父母,兄弟姐妹,然后是第一个孩子:
document.activeElement.parentNode.nextSibling.children[0];
也就是说,如果中间没有文本节点,那是因为该字段不是同级 你必须先找到父母,兄弟姐妹,然后是第一个孩子:
document.activeElement.parentNode.nextSibling.children[0];
也就是说,如果中间没有文本节点,我修改了@Kenneth的答案,下面是它的工作原理:
document.getElementById('lbl_name').attachEvent('onclick', function () { alert(document.activeElement.nextSibling.children[0].value);
});
document.activeElement
是我单击的“标签”,下一个sibling将是包含
元素的
标签,子元素[0]
是
。在其上添加.value
将返回其中的文本
谢谢大家的意见,我修改了@Kenneth的答案,以下是它的工作原理:
document.getElementById('lbl_name').attachEvent('onclick', function () { alert(document.activeElement.nextSibling.children[0].value);
});
document.activeElement
是我单击的“标签”,下一个sibling将是包含
元素的
标签,子元素[0]
是
。在其上添加.value
将返回其中的文本
谢谢大家的意见,这个标签没用。它没有任何作为控件或for属性的子体。请首先更正HTML:使用标签上的“for”属性,如下所示:名称:。for属性应该指向它所属字段的id。然后使用@Quentin在下面描述的方法。
label
使用输入的id
将两者连接起来。您的标签可以是div
或span
。但是,要回答您的问题,请使用家长td
的nextSibling child输入attachEvent
是IE的古代版本的非标准代码。使用。@itagomo:就像他说的那样。古代的p那个标签没用。它没有任何作为控件或for属性的子体。请首先更正HTML:使用标签上的“for”属性,如下所示:名称:。for属性应该指向它所属字段的id。然后使用@Quentin在下面描述的方法。label
使用输入的id
将两者连接起来。您的标签可以是div
或span
。但是,要回答您的问题,请使用家长td
的nextSibling child输入attachEvent
是IE的古代版本的非标准代码。使用。@itagomo:就像他说的那样。古代的p对于引用,this.htmlFor
应返回与this.getAttribute('for')
相同的值。以下是我在标签上添加for=“name”后所做的操作:document.getElementById('lbl_name')。attachEvent('onclick',function(){alert(document.getElementById('for')).value);});但是getting error'Objects不支持此属性或方法我手头没有IE的副本,所以我只得到了Uncaught TypeError:Object#没有方法'attachEvent',但是如果我使用标准代码的话。是的,你的代码在不同的浏览器中运行,但我需要让它在IE 7中工作(公司原因)。在经典IE版本上执行此操作确实很有挑战性。看起来像是'this.getAttribute('for')”
不适用于IE 7及以下版本。作为参考,this.htmlFor
应该返回与this.getAttribute('for')
相同的值。下面是我在标签上添加for=“name”后所做的操作:document.getElementById('lbl_name')).attachEvent('onclick',函数(){alert(document.getElementById(this.getAttribute('for')).value);});但是getting error'Objects不支持此属性或方法我手头没有IE的副本,所以我只得到了Uncaught TypeError:Object#没有方法'attachEvent',但是如果我使用标准代码的话。是的,你的代码在不同的浏览器中运行,但我需要让它在IE 7中工作(公司原因)。在经典IE版本上执行此操作非常具有挑战性。看起来“this.getAttribute('for')”
不适用于IE 7及以下版本。我是通过删除“parentNode”来实现的。代码:document.getElementById('lbl_name').attachEvent('onclick',function(){alert(document.activeElement.nextSibling.children[0].value);});我对document.activeElement.parentNode.nextSibling.children[0].valueI未获得任何信息。我是通过删除“parentNode”实现的。代码:document.getElementById('lbl_name').attachEvent('onclick',function(){alert(document.activeElement.nextSibling.children[0].value);});我对document.activeElement.parentNode.nextSibling.children[0].value未获取任何信息