【问题标题】:Finding next input element after comment tag在注释标签之后查找下一个输入元素
【发布时间】:2013-10-26 14:13:10
【问题描述】:

与这里提出的问题非常相似:How can I find html elements that contain specific text in an html comment?

我希望在包含特定文本的评论之后找到下一个表单输入字段的名称。该表单由 SharePoint 自动生成,因此不再需要操作/添加 id。这是一个表单 sn-p 的示例...

<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")" 的变体,但它总是以未定义的形式出现。

我在这里做错了什么?

【问题讨论】:

    标签: jquery sharepoint


    【解决方案1】:

    我发现在大多数情况下使用nobr 标签更容易。

    $('nobr:contains("Some Form Field")').closest('tr').find('input').attr('id');

    这可以获得表单控件,而不会弄乱自定义函数和注释标签。请注意,“人员”选择字段有点棘手,请使用 SPServices jQuery plugin 处理这些(和其他内容)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-10-13
      • 2012-02-12
      • 1970-01-01
      • 2020-06-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多