2013-04-25 59 views
1

的名字我有代碼的HTML文件形式空白列表箱 - HTML

<select name="listbox" size="3"> 
<option value="1">1</option> 
<option value="2">2</option> 
<option value="3">3</option> 
</select> 

我使用PHP腳本中的值。如果我將'listbox'重命名爲'list box',它在任何瀏覽器中都不起作用。 我認爲這是因爲白色空間,對吧?名稱中的空格不允許在html中使用? 謝謝你的幫助。

+0

@Raidenace:不,它不應該。 HTML屬性值是以空格分隔的,「列表框」的名稱將是*兩個*名稱(這是無效的)。 – 2013-04-25 22:28:10

回答

4

閱讀在http://www.w3.org/TR/html401/types.html#type-name

IDNAME令牌規範必須以字母開頭([A-ZA-Z])和之後可以是任意數量的字母,數字([ 0-9]),連字符(「 - 」),下劃線(「_」),冒號(「:」)和句點(「。」)。

+0

謝謝。我剛開始HTML等,並沒有遇到過這個。但爲什麼它在瀏覽器上正確顯示列表框?顯示時不考慮名稱? – user22515 2013-04-25 22:33:50

+0

不,名稱不影響視覺表示,所以它不重要,如果它甚至有一個.. – 2013-04-25 22:34:33

+0

再次謝謝 – user22515 2013-04-25 22:34:56

0

試試這個HTML。 Mozilla Firefox和IE都很好用!

<html> 
<head> 
<title>Name Attribute with Spaces</title> 
</head> 
<body> 
<form method="get"> <!-- no "action", form will post to self --> 
<table> 
    <thead><b>Please provide login details</b></thead> 
    <tbody> 
    <tr> 
     <td>Username:</td> 
     <td><input type="text" name="user name" /></td> 
    </tr> 
    <tr> 
     <td>Password:</td> 
     <td><input type="password" name="pass word" /></td> 
    </tr> 
    <tr> 
     <td>List Box:</td> 
     <td> 
      <select name="123 list box" size="3"> 
       <option value="1">1</option> 
       <option value="2">2</option> 
       <option value="3">3</option> 
      </select> 
     </td> 
    </tr> 
     <tr> 
     <td colspan="2"><input type="submit" value="Login" /></td> 
    </tr> 
    </tbody> 
    </table> 
</form> 
</body> 
</html> 

原因HTML不具有空間的任何問題是URL編碼。如果你測試上面的表單,你會發現瀏覽器會自動編碼特殊字符,因此一個空格會被轉換爲「+」(或者有時候是「%20」)。

test.html?user+name=ravi&pass+word=canuseeme&123+list+box=2

爲什麼PHP似乎在這裏遇到麻煩(從我依稀記得)的原因是,它試圖爲輕鬆地將請求參數訪問的變量到PHP程序員。任何語言的變量名都不包含空格或以數字開頭。

編輯:事實上,如果你讓多項選擇真正爲您的選擇框(剛加入多個屬性在選擇)的名稱需要在"[]"結束給PHP一個暗示,它需要安排一個數組變量!