【问题标题】:jQuery Selection IssuejQuery 选择问题
【发布时间】:2010-01-09 21:02:10
【问题描述】:

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

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

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

这意味着当数据发布到我的脚本时,我将有一个可用的“用户”arrau,因此我可以执行$user["name"]however 之类的操作,当我尝试使用 jquery 选择输入时...@987654323 @它不会工作。但如果我只是将输入的 id 作为“用户名”,那么var name = $("#username") 将起作用。

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

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

【问题讨论】:

  • id="user[name]" 怎么回事?您希望 id 是字面上的字符串“user[name]”还是想要比这更复杂的东西?
  • 在将输入传递给脚本时,具有 id="user[name]" 会产生一个不错的数组。
  • 使用 name="user[name]" 和 id="user_name" 或 sthg 不同的生成。我认为 [] 不能用作 ID 值。进一步的 CSS 在选择器中使用 [] 进行属性过滤,所以它也是错误的

标签: jquery validation forms selector


【解决方案1】:

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

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

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

HTML 4 specification 解决了元素的正确命名:

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

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

【讨论】:

    【解决方案2】:

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

    ID 和 NAME 令牌必须以 字母 ([A-Za-z]) 并且可以跟随 由任意数量的字母、数字 ([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[]" />
    

    【讨论】:

      【解决方案3】:

      尝试以下方法之一:

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

      【讨论】:

        【解决方案4】:

        首先要知道发布的是 name 属性而不是 id。

        现在问题来了

        要使用 jQuery 访问 &lt;input type="text" id="user[name]" /&gt;,您需要这样做

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

        【讨论】:

          猜你喜欢
          • 2013-02-13
          • 1970-01-01
          • 1970-01-01
          • 2011-04-04
          • 2011-10-31
          • 2010-12-01
          • 2010-11-25
          相关资源
          最近更新 更多