2015-05-29 25 views
0

我在SharePoint網站的工作表中的行,我需要使用CSS(首選)或JavaScript,以便隱藏有兩個主要的TD錶行: -如何隱藏已TD包含某些值

  1. TD帶有一個名爲Item Number的文本。
  2. TD帶有標題爲Item number的輸入。

這裏是加價是如何構建的: -

enter image description here

可以在這個人的意見嗎?

我嘗試下面的腳本,但沒有隱藏項目編號或客戶初始,在思路中披露,所有的TR是具有.MS-formtable類表中: -

<script> 
$(function() { 

    $('.ms-formtable tr').each(function() { 
    var frstVal = $(this).find('td').eq(0).text(); 
    if (frstVal.match(/Item Number|customer Initials/i)) { 
     $(frstVal).remove() 
    } 
    }); 

}); 

    </script> 

這裏是相關的標記: -

<table width="100%" class="ms-formtable" style="margin-top: 8px;" border="0" cellspacing="0" cellpadding="0"> 
<tbody> 
<tr> 
<td width="113" class="ms-formlabel" nowrap="true" valign="top"> 
<h3 class="ms-standardheader"> 

<nobr>Item Number</nobr> 

</h3></td> 


<td width="350" class="ms-formbody" valign="top"> 

<span dir="none"><input title="Item Number" class="ms-long ms-spellcheck-true" id="_x0049_D1_806a702b-1716-47f5-a93c-16067f502daf_$TextField" type="text" maxlength="255" value=""><br></span> 

<span class="ms-metadata">Do not customize at the list level</span> 


</td></tr> 

編輯

現在我想這個腳本: -

<script> 
$(function() { 

    $('.ms-formtable table').each(function() { 
     $(this).find('tr').each(function() { 
        $(this).find('td').text() = 'Item Number'; 
       $(this).remove(); 
      } 
     }); 

    }); 


</script> 

但沒有隱藏項目編號場...

+1

你能發表html嗎? – Jayababu

+0

@Jayababu我提供了相關的標記。謝謝 –

回答

0

你的腳本和HTML有幾個問題。

在HTML裏面有任何的td's的任何文字,你有以下查詢:

var frstVal = $(this).find('td').eq(0).text(); // how is this query going to retrive anything at all ? 

與你的腳本的問題是你迭代在所有tr's但你的緩存只有文字()第一tdtr內部的,所以改變腳本爲以下:

$(function() { 

    $('.ms-formtable tr').each(function() { 
    $(this).find('td').each(function(){ 
     var str_text = $(this).text(); 
     if (str_text.match(/Item Number|customer Initials/i)) { 
      $(this).text(' '); 
     } 
    }); 

    }); 

});

FIDDLE HERE

編輯::

你選擇了錯誤的元素,下面的查詢是錯誤的:

var str_text = $(this).text(); 

$(this)指向tr,你需要去裏面tr並找到nobr然後執行您的操作。

$('.ms-formtable table').each(function() { 
    $(this).find('tr').each(function() { 
       var str_text = $(this).find('td nobr').text(); 
       // console.log(str_text); 
       if (str_text.match(/Item Number/i)) { 
       $(this).find('input').remove(); // add this to remove input 
       $(this).text(' '); 
       } 
     } 
    }); 

}); 
+0

我試過了你的劇本但沒有隱藏任何東西.. –

+0

你能指點一下嗎? –

+0

@johnG對不起,在我的代碼中,我忘了在末尾添加一個括號'});'看到這個例子,你就會明白http://jsfiddle.net/dpc9wxpa/ –

0

希望這是你在找什麼。

$('tr').each(function(){ 
 
    var count=0; 
 
$(this).find('td').each(function(){ 
 
if($(this).text()=='Item Number'){count=count+1;} 
 
if($(this).find('input[title="Item Number"]')){count=count+1;} 
 
}); 
 
if(count==2){$(this).hide();} 
 

 
});
<html> 
 
<head> 
 
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.2.3/jquery.min.js"></script> 
 
</head> 
 
<body> 
 
<table width="100%" class="ms-formtable" style="margin-top: 8px;" border="0" cellspacing="0" cellpadding="0"> 
 
<tbody> 
 
<tr> 
 
<td width="113" class="ms-formlabel" nowrap="true" valign="top"> 
 
<h3 class="ms-standardheader"> 
 

 
<nobr>Item Number</nobr> 
 

 
</h3></td> 
 

 

 
<td width="350" class="ms-formbody" valign="top"> 
 

 
<span dir="none"><input title="Item Number" class="ms-long ms-spellcheck-true" id="_x0049_D1_806a702b-1716-47f5-a93c-16067f502daf_$TextField" type="text" maxlength="255" value=""><br></span> 
 

 
<span class="ms-metadata">Do not customize at the list level</span> 
 

 

 
</td> 
 
    </tr> 
 
    </table> 
 
</body> 
 
</html>

代碼片斷輸出將是一個空白頁面,如示例表只有一個具有提到2 TD的行,所以我躲在行的基礎上,creteria。

+0

我試過你在我的表單內的腳本,但沒有隱藏物品編號,仍然是標籤和inout字段顯示.. –

+0

您上面張貼的代碼缺少表格內的tr。所以請檢查您是否有tr在你原來的代碼或不。如果不添加TR並嘗試 – Jayababu

+0

你正在談論我的編輯內的代碼? –