2013-04-25 24 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一个暗示,它需要安排一个数组变量!