2015-11-06 82 views
0

在選擇下拉字段:數據庫我想隱藏特定的行,但只有數據庫下的字段。如何在保持其他人就位的同時只隱藏部分行?我試圖使用JQUERY並將一個ID附加到行中,但整行都在刪除,我想保留右側。隱藏表中的特定行嗎?

我知道我可以做風格可見性:隱藏,但我希望行消失,如果不需要字段,向上移動。

<tr> 
<th>* Database</th> 
<th class="th_background" style="border-right-style: groove;"><select id="database" class="form-control" name="database" onchange="database_details()"> 
         <option value="oracle" selected="selected">Oracle</option> 
         <option value="mssql">Sql Server</option> 
         <option value="teraData">TeraData</option> 
         <option value="epic">Generic ODBC(Chronicles)</option> 
         <option value="sas">SAS</option> 
       </select> 
       </th> 
       <th class="th_background"><input type="radio" name="refreshTde" 
        value="yes" checked> <span data-toggle="tooltip" 
        title="This option creates new TDE or replaces existing TDE file with full data.">Full 
         Refresh <i class="fa fa-question-circle"></i></span></th> 
       <th class="th_background"><input type="radio" name="refreshTde" 
        value="no"> <span data-toggle="tooltip" 
        title="This option appends existing TDE. Should have same data items in the SQL.">Incremental 
         Refresh <i class="fa fa-question-circle"></i></span></th> 

</tr> 

<tr> 
<th>* Service ID</th> 
       <th class="th_background"><input type="text" id="sidText" 
        name="sid" class="form-control" style="width: 100%" placeholder="Enter SID"></th> 
<th colspan="2" style="background-color: #0072bc;"><span 
        style="color: white;">* SQL Query to Generate TDE</span></th> 

我只是想隱藏和摺疊此部分:

<th>* Service ID</th> <th class="th_background"><input type="text" id="sidText" name="sid" class="form-control" style="width: 100%" placeholder="Enter SID"></th>

http://jsfiddle.net/wf7j5tn8/

回答

0

您可以將類行,或者只是使用任何queryselector將工作爲你。

var options = document.querySelectorAll('option') 
 
var headers = document.querySelectorAll('th') 
 
options[3].style.display = "none" 
 
headers[2].style.display = "none"
<link rel="stylesheet" href="http://www.w3schools.com/stdtheme.css" type="text/css"> 
 
<link rel="stylesheet" href="http://www.w3schools.com/lib/w3.css" type="text/css"> 
 
<table class="w3-table-all" style="width:100%"> 
 
<tbody><tr> 
 
\t <th>Number</th> 
 
\t <th>First Name</th> 
 
\t <th>Last Name</th> \t \t 
 
\t <th>Points</th> 
 
</tr> 
 
<tr> 
 
\t <td>1</td> 
 
\t <td>Eve</td> 
 
\t <td>Jackson</td> \t \t 
 
\t <td>94</td> 
 
</tr> 
 
<tr> 
 
\t <td>2</td> 
 
\t <td>John</td> 
 
\t <td>Doe</td> \t \t 
 
\t <td>80</td> 
 
</tr> 
 
<tr> 
 
\t <td>3</td> 
 
\t <td>Adam</td> 
 
\t <td>Johnson</td> \t \t 
 
\t <td>67</td> 
 
</tr> 
 
<tr> 
 
\t <td>4</td> 
 
\t <td>Jill</td> 
 
\t <td>Smith</td> \t \t 
 
\t <td>50</td> 
 
</tr> 
 
</tbody></table> 
 

 
<select id="database" class="form-control" name="database" onchange="database_details()"> 
 
         <option value="oracle" selected="selected">Oracle</option> 
 
         <option value="mssql">Sql Server</option> 
 
         <option value="teraData">TeraData</option> 
 
         <option value="epic">Generic ODBC(Chronicles)</option> 
 
         <option value="sas">SAS</option> 
 
       </select>

+0

嗯,不是entirly我所得到的。看看我的小提琴,我在每一行都有一個有多個的桌子,我想隱藏那一面並將另一個面朝上移動到下一行,而不更改桌子的右側。 – Ben

+0

仍然有點困惑,但實際上所有你需要做的是顯示=「無」,其他一切都將由正常流程處理,或者是打擾你? –

+0

如果我確實沒有顯示,我的桌子右側移到左邊。我試圖讓它的位置固定但仍然發生。 – Ben

0

如果我正確理解你的問題,你應該能夠只是一個類添加到要隱藏的元素,然後使用該類申請「顯示:無」到那些元素。

這是你的fiddle更新了我的意思。

下面是從小提琴的相關代碼:

HTML

<th class="hidden">* Service ID</th> 
<th class="th_background hidden"><input type="text" id="sidText" 
    name="sid" class="form-control" style="width: 100%" placeholder="Enter 
    SID"> 
</th> 

CSS

.hidden { 
    display: none; 
} 
+0

這實際上會隱藏字段,但表的右側將移動到左側,我希望它在固定的位置。 – Ben

+0

現在我明白了這個問題好一點... – jennEDVT

+0

我創建了這個簡化的測試用例,以擺脫一些噪音,並更好地突出顯示您遇到的問題。 http://jsfiddle.net/kr7davku/2/我還沒有想出一個好的解決方案,但... – jennEDVT

0

精確的解決方案可能是這個

<th id="dataHide">* Service ID</th> <!-- add id dataHide to your th --> 

//add these to js function 
$("input#sidText").css("visibility", "hidden"); 
$("#dataHide").css("visibility","hidden"); 

我覺得這是什麼您想:http://jsfiddle.net/wf7j5tn8/7/


另一種方法是,你禁用場,我不希望對用戶隱藏功能,而只是將其禁用

$("input#sidText").prop('disabled','disabled');

HTML

<tr id="dataHide"> <!-- id assigned here to hide the the row --> 
<th>* Service ID</th> 
<th class="th_background"><input type="text" id="sidText" name="sid" class="form-control" style="width: 100%" placeholder="Enter SID"></th> 
<th colspan="2" style="background-color: #0072bc;"><span style="color: white;">* SQL Query to Generate TDE</span></th> 
</tr> 

js/jQuery

function database_details() { 
    $("#dataHide").hide(); //hides the id (#) dataHide assigned to the TR, hence removing the whole row. 
    //give this id (dataHide) to any element you want to hide on change of select dropdown 
} 

這將工作。希望它能解決你的問題。

+0

但這將隱藏整個行,我只想隱藏前兩個,而另一個則保留在那裏。是否有可能使嵌套tr行,只是將寬度設置爲50%?然後用它來隱藏第一個? – Ben

+0

在你的評論中,你會說「給這個id(dataHide)給你想隱藏的任何元素......」但是,ID不應該應用於多個元素。在這種情況下,你應該使用一個類。 – jennEDVT

+0

@jennEDVT是的,從當前元素中刪除ID並將其提供給另一個元素。我寫它判斷,運營商瞭解它「ID不應該被應用於多個元素」。 –