2

我有以下代码。

JavaScript

<script>
function postUser() {
    var user = $('span input').serialize;
    alert(user.username);
}
</script>

HTML

<span>
  User name : <input type="text" name="username"><br />
  Password: <input type="password" name="password" /><br />
  First name: <input type="text" name="firstName" /><br />
  Last name: <input type="text" name="lastName" /><br />

  <button onclick="postUser()">Submit</button>
</span>

当我在 UI 中填充项目时,警报显示“未定义” - 但我认为通过序列化数组它应该是 JSON 对象?任何想法为什么用户名未定义?

4

3 回答 3

12

你忘记了()为了调用这个函数。

var user = $('span input').serialize();

此外,.serialize()给你一个string结果,而不是一个对象。

也许你想要这个:

var username = $('span input[name=username]').val();

如果您想要一个引用所有值的对象,则需要创建它。

var vals = {};

$('span input').each(function() {
    vals[this.name] = this.value;
});

var name = vals.username;
于 2012-10-09T16:47:13.357 回答
1

你不需要在这里序列化

您需要的是获取名称为 "username" 的输入的值:

alert($('input[name="username"]').val());
于 2012-10-09T16:48:47.363 回答
0

.serialize() 用于将一组表单元素编码为提交的字符串。它不允许您将表单值作为对象访问。阅读更多

HTML

<span>
  User name : <input type="text" name="username"><br />
  Password: <input type="password" name="password" /><br />
  First name: <input type="text" name="firstName" /><br />
  Last name: <input type="text" name="lastName" /><br />

  <button id="btn" onclick="postUser()">Submit</button>
</span>​

jQuery

$("#btn").click(function(){
   alert($('input[name="username"]').val());
 });

在此处尝试演示

于 2012-10-09T16:52:28.310 回答