与此处提出的问题非常相似:如何在 html 注释中找到包含特定文本的 html 元素?
我希望在包含特定文本的评论之后找到下一个表单输入字段的名称。该表单由 SharePoint 自动生成,因此不再需要操作/添加 id。这是表单片段的示例...
<tr>
<td nowrap="true" valign="top" width="190px" class="ms-formlabel">
<h3 class="ms-standardheader">
<nobr>Some Form Field</nobr>
</h3>
</td>
<td valign="top" class="ms-formbody">
<!-- FieldName="My Field Name" FieldInternalName="MyFieldName" FieldType="SPFieldText" -->
<span dir="none">
<input name="ctl00$PlaceHolderMain$idDocSetDisplayFormWebPart$ctl00$ctl02$ctl08$ctl00$ctl00$ctl04$ctl00$ctl00$TextField" type="text" maxlength="255" id="ctl00_PlaceHolderMain_idDocSetDisplayFormWebPart_ctl00_ctl02_ctl08_ctl00_ctl00_ctl04_ctl00_ctl00_TextField" title="Field Name" class="ms-long ms-spellcheck-true" /><br />
</span>
</td>
注意:SharePoint 在实际表单输入之前的 HTML 注释中为您提供 FieldName、FieldInternalName 和 FieldType。(它还为输入提供了一个疯狂的名称和 ID,但这是一个不同的主题。)
我正在使用 ajax 从另一个项目中提取数据,以便预先填充此表单中的某些字段。我正在遍历表单字段,并且可以使用...成功找到适当的评论
function fnFindThisComment(){
var myFieldInternalName = 'FieldInternalName="MyFieldName"'; // hardcoded for example purposes
$("*").contents().filter(function(){ return this.nodeType == 8; }).each(function(i, e){
match = this.innerHTML.match(myFieldInternalName) ;
if (match){alert(match);} });
问题是我无法获取输入字段的名称或 ID。我尝试了许多“myInputName = $(this).nextAll("input").attr("name")" 的变体,但它总是以未定义的形式出现。
我在这里做错了什么?