2012-04-04 123 views
4

我有一个SharePoint列表的文本字段的下面一行:TitleYearType or Location。我希望能够以默认显示形式隐藏Type or Location表格行。我知道我应该创建一个JavaScript脚本并将它放在DispForm.aspx中的Content Editor Web部件中。如何根据字段名称(jQuery)隐藏SharePoint显示表单中的字段?

我不熟悉jQuery语法,因此我需要帮助代码,即我不知道如何引用包含Type or Location字段及其值的表行。这是我到目前为止已经完成,但它不工作:

jQuery(document).ready(function($) { 
    $("input[title='Type or Location']").closest("tr").hide(); 
}); 

我知道"input[title='Type or Location']"部分是不正确;至少我认为是这样。任何人都可以帮我吗?谢谢。

+0

这是DispForm.aspx?如果是这样,那么页面上是否有真正的输入控件?标准的单行文本字段不会在DispForm.aspx的输入字段内呈现。此外,您正在使用哪个版本的SharePoint? – 2012-04-04 14:59:01

+0

是的,我知道'input ...'是错误的。我使用它,因为代码实际上是从另一个脚本中获取的,其中添加新项目表单是使用jQuery修改的。SharePoint版本是2010.感谢您在下面提供正确的答案。 – Boris 2012-04-05 08:43:18

回答

9

尝试:

jQuery(document).ready(function($) { 
    $("h3.ms-standardheader:contains('Type or Location')").closest("tr").hide(); 
}); 
+0

非常感谢。 – Boris 2012-04-05 08:40:41

+0

这工作完美隐藏整个行(标签加字段)。谢谢丰富 – Axiom 2015-01-05 15:46:49

0

试试这样说:

jQuery(document).ready(function($) { 
    $("input[title='Type'],input[title='Location']").closest("tr").hide(); 
}); 
+0

我不确定我是否足够清楚,“类型或位置”只是一个列表字段的标题(或列表列,如果它对您更有意义)。问题在于它无法找到最接近的''标签,然后将其隐藏起来。 – Boris 2012-04-04 11:57:41

+0

你有没有尝试'pravAll'查找''。你可以得到所有的tr集合,并得到':first' of tr? – Jigs 2012-04-04 12:02:56

+0

由于您想要在页面加载后立即隐藏这些元素,为什么不设置style =“display:none;”服务器端还是样式表? – 2012-04-04 12:05:56

0

这要看是什么类型的列键入IOR位置是。如果它是单行文本,那么你就近了。您应该使用像IE的开发工具或Firebug这样的DOM检查器来查看输入元素的实际标题是什么。

如果列是不同的类型,则很可能不能输入元件。再次使用DOM检查器,您可以查看构成字段控件的元素并根据该选择器决定选择器。

最后,请记住,在脚本中隐藏的东西是不安全的。精明的用户可以关闭该脚本或以其他方式更改脚本,以便他们可以对其进行编辑。这完全取决于你的要求。

// // UPDATE 啊,你说DispForm。正如在另一个答案中指出的那样,DispForm中没有任何输入元素。你需要纠正你的选择。

2

我不知道你为什么要使用jQuery了点。在SharePoint中,您可以选择创建必需的字段,可选或隐藏。在大多数情况下,只需切换到隐藏状态即可解决您的问题。

为了记录,我也尽量避免使用jQuery(document).ready,它可能与SharePoint onload事件冲突。在你的情况下,它不是必需的。

更新:这里有一个方法使用jQuery做到这一点:

$("td.ms-formlabel:contains('Type or Location')").parent().hide(); 
+0

我想使用jQuery而不是简单地隐藏字段的原因是因为我只是不希望它在DispForm.aspx中可见,但我确实希望它通过编辑和添加新窗体可供用户使用。 – Boris 2012-04-05 08:11:00

+0

Christophe有一个观点。将[ShowInDisplayForm](http://msdn.microsoft.com/zh-cn/library/microsoft.sharepoint.spfield.showindisplayform.aspx)设置为false也将隐藏显示窗体上的字段,同时仍然使其在其他窗体中可用形式和观点。虽然jQuery也可以这样做,但jQuery真正发挥的作用在于,它可以用于根据其他条件(列表项中的其他条目的值,当前用户等)有条件地隐藏字段,而无需创建自定义字段类型。 – 2012-04-05 12:59:48

+0

@Boris好吧,明白了。我已经添加了一个代码示例。我的第二个评论仍然有效,你不应该需要jQuery(document).ready。 – Christophe 2012-04-05 19:41:02

0

的语法应该是这样的:

$("input[title='Type']").closest("tr").hide(); 

$("input[title='Location']").closest("tr").hide(); 

它将工作。

0

如果它只是默认显示窗体,那么只需创建一个视图并将其设置为默认值即可?

+1

欢迎来到Stack Overflow!这真是一个评论,而不是一个答案。有了更多的代表,[你将能够发表评论](http://stackoverflow.com/privileges/comment)。 – 2012-11-20 19:05:19

+0

@AR Ebhendra Pagoti,感谢您的建议。这绝对是一种可行的方式,但我实际上受到只允许脚本编写的业务的限制。 – Boris 2012-11-21 12:21:33

相关问题