0

我目前正在用 jQuery 编写一些表单验证并遇到以下问题..

我以这样的方式为我的输入提供 id,当数据发布时,我有一个数组可以像这样使用..

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

这意味着当数据发布到我的脚本时,我将有一个可用的“用户”arrau,所以我可以做类似的事情,$user["name"]但是当我尝试使用 jquery 选择输入时......var name = $("#user[name]")它不会工作。但是,如果我只是将输入的 id 作为“用户名”,那么var name = $("#username")就可以了。

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

关于我如何解决这个问题的任何想法?它适用于所有浏览器吗?

4

4 回答 4

1

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

您的表单元素需要更改为以下内容:

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

HTML 4 规范解决了元素的正确命名问题:

ID 和 NAME 标记必须以字母 ([A-Za-z]) 开头,后跟任意数量的字母、数字 ([0-9])、连字符 ("-")、下划线 ("_") , 冒号 (":") 和句点 (".")。

在属性中使用方括号name是一种将数组格式的数据传递给服务器端脚本语言的常用技术,但在 an 中使用它们id肯定会混淆 JQuery。

于 2010-01-09T21:06:07.470 回答
0

选择器不起作用,我并不完全感到惊讶,因为根据HTML 规范,您的 ID 无效:

ID 和 NAME 标记必须以字母 ([A-Za-z]) 开头,后跟任意数量的字母、数字 ([0-9])、连字符 ("-")、下划线 ("_") , 冒号 (":") 和句点 (".")。

PHP 手册有一个关于使用属性而不是 ID将表单元素作为数组传递给服务器的正确方法的教程:name

<input name="MyArray[keyOne]" />
<input name="MyArray[keyTwo]" />
<input name="MyOtherArray[]" />
<input name="MyOtherArray[]" />
于 2010-01-09T21:07:41.343 回答
0

尝试其中之一:

$("[id='user[name]']")
$("#user\\[name\\]")
$("#user\\005Bname\\005D")
于 2010-01-09T21:08:15.303 回答
0

首先要知道,名称属性是发布的内容,而不是 id。

现在的问题

要使用<input type="text" id="user[name]" />jQuery 访问,您需要这样做

var name = $("input[id='user[name]']");
于 2010-01-09T21:08:38.533 回答