2011-07-07 19 views
1

據我所知,value正被用作HTML輸入屬性。具有「value」屬性作爲隱藏值的正確練習

<form action="form_action.asp" method="get"> 
    <input type="submit" value="Submit form" /> 
</form> 

不過,我想知道,這是一個正確的做法,我可以用它在其他HTML屬性,作爲隱藏的價值?

例如,對於每個表格行,我想用一個唯一的ID標記它作爲SQL數據庫中的唯一ID。但是,與此同時,我還想隱藏最終用戶的唯一ID。

這是我一直在使用的技術。

<html> 
<head> 
<title> 
XXX 
</title> 
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"> 
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"></script> 

<script type="text/javascript"> 
$(document).ready(function() { 
    $('.delete-button').click(function() { 
     var clicked = $(this); 
     alert(clicked.parent('tr').attr('value')); 
    });  
}); 
</script> 

</head> 
<body> 

<table style="border-style:none"> 
    <tbody> 
     <tr> 
      <th>Server Name</th> 
      <th>IP Address</th> 
     </tr> 
     <tr style="border-style:none" value="ROW ID 1"> 
      <td class="edit">Yahoo Server</td> 
      <td class="edit">196.168.0.1</td> 
      <td class = "delete-button" style="border-style:none"><a href="">DELETE</a></td> 
     </tr> 
     <tr style="border-style:none" value="ROW ID 2">  
      <td class="edit">Google Server</td> 
      <td class="edit">196.168.0.2</td> 
      <td class = "delete-button" style="border-style:none"><a href="">DELETE</a></td> 
     </tr> 
    </tbody> 
</table> 

</body> 
</html> 

因爲我沒有做HTML和JavaScript很多時候,我在想,是否上面是正確的,常用的技術?

+0

重複的問題:http://stackoverflow.com/questions/209428/non-standard-attributes-on-html-tags-good- thing-bad-thing-your-thoughts – jchavannes

回答

3

對於嚴格的HTML4/XHTML,您不應該在標籤上創建任意屬性。你可以,但對模式無效。

對於HTML5,最佳做法是使用data- attributes

例如。

<tr style="border-style:none" data-rowid="ROW ID 1"> 
    <td class="edit">Yahoo Server</td> 
    <td class="edit">196.168.0.1</td> 
    <td class="delete-button" style="border-style:none"><a href="">DELETE</a></td> 
</tr> 
+1

添加到...使用數據屬性存儲數據沒有任何問題,這就是它們的用途。但是你必須認識到你不能相信你發送的信息。你說你正在把數據庫唯一ID放在那裏......如果有人對它們進行了編輯,如果他們操縱了這個ID呢?你需要確保你適當地處理,比如確保他們有權這樣做,或者擁有你。他們可能會向你發送任何ID。 – InfinitiesLoop

+1

所有的好建議 - 數據不應該綁定到演示。小規模做起來很方便,但應該避免。 – RobG

+0

@InfinitiesLoop非常正確,請始終檢查瀏覽器中使用的任何數據,特別是在以某種容量發回時 - 因爲瀏覽器中的任何內容都不會被操縱。 – Orbling

0

而不是使用值,我建議使用屬性。 JQuery支持屬性,這是一個很常見的做法。 http://api.jquery.com/attr/

在初始化時,您可以設置所有屬性,然後您可以擁有自己的自定義屬性來讀取您之前設置的值(然後可以映射到字典或沿着這些行的某些內容)。

這有幫助嗎?

+0

'value' **是**屬性。它是名爲「value」的屬性 –

0

否。在這種情況下,值是表單組件。 你只想用ID = 「ROW ID 2」 或任何你的價值 -

alert(clicked.parent('tr').attr('id')); 

此外,這個網站是非常過時了。只是我的意見,不要被視爲一個諷刺評論,但一個好的html5和css3的審查將是有益的。

+0

古體?如何? – RobG

+0

@RobG:可能是「使用DIV,從不表」人羣之一... – Orbling

+0

意見,如上所述。帶或不帶css的tabled html的使用已經消失。當然,這取決於場景。在某些情況下,數據矩陣更容易與表格一起顯示,但不是必需的。我之所以這麼說,是因爲我工作的公司認爲,除非必要,否則不要將html寫入低於當前標準的標準 - 就像必須在html4過渡時期的新聞稿一樣。大多數客戶甚至在提案中寫道:HTML遵循最新的最高標準,即今天指向html5的標準,但不一定表示如果不是html5,所有代碼都很糟糕。 –

0

雅知道...你可以使用......你甚至可以有自己的自定義屬性來進行數據的目標將永遠不會被顯示給最終用戶除了在源視圖..樣本如下:

<tr style="border-style:none" mydata="ROW ID 2"> and it can be accessed as ('tr').attr('mydata') 
+2

-1。請不要鼓勵使用非標準屬性或DOM屬性。在HTML 4中可以使用* class *屬性,在HTML5 * data- *屬性中也可以使用。 – RobG

+0

+1我始終使用非標準屬性,它從來沒有造成任何問題。 – jchavannes

+0

@ jchavannes:「從未造成任何問題」這一事實本身並不是明智的做法或最佳做法。大多數瀏覽器*容忍*無效的數據,有時以有用的方式,並不意味着你應該故意給它。 – Orbling

0

是的,你可以使用你想要

<tr style="border-style:none" rowid="1"> 

然後在jQuery的你會被訪問哪個屬性名稱:

$('tr[rowid=1]'); 

,或者如果你有一個排,想知道它的ID:

var rowid = $(this).attr('rowid');