2013-02-15 101 views
-1

我需要获取位于共享点列表范围内的输入的id。 它看起来像下面的代码。jquery获取输入字段的ID

<tr id="idEstablishmentRow"> 
<td class="ms-formbody" vAlign="top"> 
<span dir="none"> 
<span style="vertical-align: middle;"> 
<input type='text' id='hello' /> 
</span> 
</span> 
</td> 
</tr> 

现在我想获得输入的id。 我曾尝试过:

var _test = $('#idEstablishmentRow').find('td.ms-formbody'); 
    var _test1 = _test.find('span.style'); 

    var _test2 = _test1.find('input'); 
    var _test3 = _test2.attr('id'); 
    alert(_test3); 
    alert(_test2); 

但它没有工作。 任何人都可以帮助我吗?

回答

6

您可能希望这样:

var id = $('#idEstablishmentRow td.ms-formbody span input').attr('id'); 

但随着你的HTML没有id为idEstablishmentRow任何元素,这是很难确定的你到底想要什么。

Demonstration

+0

我有一个很多trs/tds的sharepoint列表,idestablishmentrow是该行的id忘记了抱歉。 – user1652050 2013-02-15 15:25:55

+0

所以这应该工作。也许你想用'td.ms-formbody'替换'td',这取决于你的真实HTML。 – 2013-02-15 15:26:17

+0

我已经上传了实际的代码。我需要输入的ID,如果我使用你的代码,并尝试提醒它它说undefined – user1652050 2013-02-15 15:36:09

0
var inputId = $("span input").attr("id"); 
0

您的片段不会因为这个选择的工作:var _test1 = _test.find('span.style');

做这件事时,你试图找到与CSS类“风格”,而不是HTML属性的风格跨度。因此_test1是空的。

您可以执行以下操作来解决它:var _test1 = _test.find('span[style]');

虽然它不是一个真正的好选择,因为它是最有可能会,如果你更改CSS从内联删除它打破。

  • 您可以向范围<span class="aclass"></span>添加一个班级。这样,您可以通过以下选择器选择它:var _test1 = _test.find('span.aclass');

  • 如果它总是第二个孩子,您也可以用其他方式选择它,如var _test1 = _test.find('span:nth-child(2)');

这些是只有两个多可能的解决方案去与你_test2_test3

  • 您也可以尝试选择用它输入的所有跨,var _test1 = _test.find('span input');_test.find('span').children('input')。然后你可以做你的_test3

注意,您可以在1号线重组的选择:

这有没有提上跨度的一类,因为你实际上不仅查询跨度的优势,但对于一个带有输入的跨度。

$('tr#idEstablishmentRow td.ms-formbody span input'); 

//or to get the id directly 
$('tr#idEstablishmentRow td.ms-formbody span input').attr('id');