2012-04-04 15 views
4

私は、次の1行のテキストフィールドを持つSharePointリストを持っています:TitleYearおよびType or Locationです。 Type or Locationテーブル行をデフォルトの表示形式で非表示にしたいと考えています。 JavaScriptスクリプトを作成してDispForm.aspx内のコンテンツエディタ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のためのものですか?もしそうなら、本当にページに入力コントロールがありますか?標準の1行のテキストフィールドは、DispForm.aspxの入力フィールド内でレンダリングされません。また、どのバージョンのSharePointを使用していますか? –

+0

ええ、私は '入力... 'が間違っていることを知っています。コードは実際には新しい項目フォームの追加がjQueryで変更された別のスクリプトから取られているので、私はそれを使用しました。SharePointのバージョンは2010年です。下記の正解をいただきありがとうございます。 – Boris

答えて

9

試してみてください。

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

ありがとうございます。 – Boris

+0

これは完全に行全体を隠すために機能しました(ラベルとフィールド)。 Richさんありがとうございます – Axiom

0

はそれをこの方法を試してみてください:

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

私は十分明確であるかどうか分かりません。 'Type or Location'は、1つのリストフィールドのタイトルです(または、あなたがもっと分かりやすい場合はリストカラム)。問題は、最も近い ''タグを見つけてそれを隠すことができないということです。 – Boris

+0

''を見つけるために 'pravAll'を試してみましたか?すべてのtrコレクションを取得し、 ':first''を取得できますか? – Jigs

+0

ページが読み込まれた直後にこれらの要素を非表示にしたいので、style = "display:none;"サーバーサイドかスタイルシートか? –

0

ことがある列タイプIOR場所の種類により異なります。それが1行のテキストであれば、あなたは近くにいる。 IEの開発者ツールやFirebugのようなDOMインスペクタを使用して、入力要素の実際のタイトルが何であるかを確認する必要があります。

列が異なるタイプの場合は、入力要素ではない可能性があります。 DOMインスペクタを再度使用して、フィールドコントロールを構成する要素を確認し、そこからセレクタを決定することができます。

最後に、スクリプト内のものを隠すことは安全ではないことに注意してください。精通したユーザーは、スクリプトをオフにしたり、スクリプトを編集してスクリプトを編集したりすることができます。それはあなたの要求に依存します。

//更新// ああ、あなたは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

+0

クリストフにはポイントがあります。 [ShowInDisplayForm](http://msdn.microsoft.com/en-us/library/microsoft.sharepoint.spfield.showindisplayform.aspx)をfalseに設定すると、表示フォームのフィールドも非表示になりますが、他のフォームとビュー。 jQueryはこれを行うこともできますが、jQueryが本当に輝いているのは、カスタムを作成することなく条件付きで他の条件(リストアイテム、現在のユーザーなどの他のフィールドの値)に基づいてフィールドを非表示にすることができるということですフィールドタイプ。 –

+0

@Boris ok、それを手に入れました。コードサンプルを追加しました。私の2番目のコメントは有効なので、jQuery(document).readyは必要ありません。 – Christophe

0

構文は次のようにする必要があります:

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

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

それは動作します。

0

デフォルト表示フォームの場合は、単にビューを作成してデフォルトにするのはどうですか?

+1

ようこそスタックオーバーフロー!これは本当にコメントであり、答えではありません。もう少し担当者がいれば、[あなたはコメントを投稿できる](http://stackoverflow.com/privileges/comment)。 –

+0

@AR Ebhendra Pagoti、提案に感謝します。間違いなく1つの方法ですが、私は実際にはスクリプティングのみを許可するビジネスの制限があります。 – Boris

関連する問題