2010-01-09 81 views
0

即时通讯目前正在写的jQuery某种形式的验证和具有跟随着问题..jQuery的选择问题

我给IDS我输入这样的方式,当数据张贴,我有一个数组一起工作,像这样..

<input type="text" id="user[name]" /> 
<input type="text" id="user[email]" /> 

这意味着,当数据被贴到我的剧本,我就会有一个可用的“用户”阿劳这样我就可以做这样的事情$user["name"]然而,当我尝试做选择与jquery输入.. var name = $("#user[name]")它不会工作。但是,如果我只是将输入的ID作为“用户名”,那么var name = $("#username")将起作用。

我假设它与jQuery中的CSS选择器,因为它试图访问具有ID名称的用户对象?就像$("input[username]")将选择带有用户名的输入一样。

有关我如何解决此问题的任何想法?它会在所有浏览器中工作吗?

+0

这是怎么回事使用id =“用户[名]”?你是否希望id字面上是字符串“user [name]”还是你想要比这更复杂的东西? – 2010-01-09 21:06:42

+0

当输入传递给脚本时,id =“user [name]”会生成一个很好的数组。 – cast01 2010-01-09 21:08:35

+0

使用name =“user [name]”和id =“user_name”或sthg生成的不同。我认为[]不可用作ID值。进一步的CSS在选择器中使用[]进行属性过滤,所以它的错误也是 – ZeissS 2010-01-09 21:16:23

回答

1

idid表单元素的值不是传递给服务器的值,它仅在文档DOM和脚本语言内部使用。这是通过name

你的表单元素需要进行修改,以这样的事:

<input type="text" id="username" name="user[name]" /> 
<input type="text" id="useremail" name="user[email]" /> 

HTML 4 specification地址元素的正确命名:

ID和名称标记必须以 字母开头([ (“ - ”),下划线 (“_”),冒号(“:”),以及可能由 跟随 的任何数目的字母,数字 ([0-9]),连字符(“ - ”和期间 (“。”)。

name属性使用方括号是一个常用技术以阵列形式的服务器端脚本语言来传递数据,但在一个id使用它们肯定会混淆JQuery的。

+0

啊,多数民众赞成它,谢谢! – cast01 2010-01-09 21:09:11

0

我不能完全惊讶的是,选择不工作,因为你的ID根据HTML specification无效:

ID和名称标记必须以 字母开头([A-ZA ([ - ]),下划线 (“_”),冒号(“:”)以及句点 (可能与 之间有任何数量的字母,数字 ([0-9]),连字符( “”)。

PHP手册对正确的方法来pass form elements as an array到服务器的教程,使用name属性,而不是ID:

<input name="MyArray[keyOne]" /> 
<input name="MyArray[keyTwo]" /> 
<input name="MyOtherArray[]" /> 
<input name="MyOtherArray[]" /> 
0

尝试其中之一:

$("[id='user[name]']") 
$("#user\\[name\\]") 
$("#user\\005Bname\\005D") 
0

首先知道name属性是发布内容而不是id。

现在的问题

与jQuery访问<input type="text" id="user[name]" />你需要做这样的

var name = $("input[id='user[name]']");