2011-06-26 47 views
3

我有一個網頁,我想用用戶輸入文本做些事情。通常,在一個<form>嵌套和設置輸入中使用<input type="text" />而不使用表單屬性在html嚴格模式中是不可接受的。我想避免<form>,但仍希望使用一些文本字段來使用Javascript。沒有表格的文本字段

有人得到了解決方案?

如果有人幫我選擇一個文本輸入選項,並點擊一個按鈕(帶/不帶jQuery)來提示輸入數據,它會更有幫助。

在此先感謝...

回答

5

使用W3C's validator,這通過HTML 4.01嚴格:

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> 
<html> 
<head> 
<title>test</title> 
</head> 
<body> 
<p><input type="text" value="hi"></p> 
</body> 
</html> 

並且這通過XHTML 1.0嚴格:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
<head> 
<title>test</title> 
</head> 
<body> 
<p><input type="text" value="hi" /></p> 
</body> 
</html> 

的問題是,<input>是直列標籤,因此需要是裏面的東西接受這樣的標籤(<body>沒有)。

0

沒有窗體的輸入元素是完全可以的。它在哪裏說它不被允許?

+0

我正在使用微軟表達網站,它顯示錯誤,說在HTML 4.01嚴格不能包含標籤

+1

@blasteralfred:因爲'body'不允許有'inline'元素。 –

+0

@blasteralfred:這不是缺少一種形式 - 這是事實,身體可能不直接包含內聯元素。把你的輸入放在另一個塊元素中,它應該被驗證。 –

2

具有的DTD仔細一看,一個input元素是inline的一部分(可以稱之爲)組:

<!ENTITY % formctrl "INPUT | SELECT | TEXTAREA | LABEL | BUTTON"> 

<!-- %inline; covers inline or "text-level" elements --> 
<!ENTITY % inline "#PCDATA | %fontstyle; | %phrase; | %special; | %formctrl;"> 

因此,無論inline是允許的,因此是input。這意味着你不需要form

E.g.在div

<!ENTITY % flow "%block; | %inline;"> 
(...) 
<!ELEMENT DIV - - (%flow;)*   -- generic language/style container --> 

,你在評論中提到body,:

<!ELEMENT BODY O O (%block;|SCRIPT)+ +(INS|DEL) -- document body --> 

(我想不用說,block不包含inline)。