如何获取表单中所有输入的值

时间:2013-09-11 18:22:46

标签: jquery forms input

代码:

<form name="newform" action="test.php" method="post"  class="form-horizontal input-prepend" id="newform">

  <div class="form-group">
    <label class="control-label" for="test1">test1</label>
    <input type="text" name="test1" class="form-control" id="test1" placeholder="">
  </div>

  <div class="form-group">
    <label class="control-label" for="test2">test2</label>
    <input type="text" name="test2" class="form-control" id="test2" placeholder="">
  </div>

<div class="form-group">
    <label class="control-label" for="test3">test3</label>
    <input type="text" name="test3" class="form-control" id="test3" placeholder="">
  </div>

<div class="form-group">
    <label class="control-label" for="test1">test4</label>
    <input type="text" name="test4" class="form-control" id="test4" placeholder="">
  </div>

<div class="form-group">
    <label class="control-label" for="test5">test5</label>
    <input type="text" name="test5" class="form-control" id="test5" placeholder="">
  </div>

</form>

为了获得输入的值,我们可以使用它的id,例如alert($("#test5").val()),但是当我们不知道{时,如何从表单的开头顺序获取输入值{1}}输入?

对于我的测试代码,我可以使用代码获得价值:

id

当我们不知道输入var value1 = $("test1").val(); var value2 = $("test2").val(); var value3 = $("test3").val(); var value4 = $("test4").val(); var value5 = $("test5").val(); 时,有没有人对如何获取值有任何想法?

10 个答案:

答案 0 :(得分:9)

尝试:

$('form').serialize();

或:

var values = [];
$('input').each(function() {
    values.push($(this).val());
});

答案 1 :(得分:3)

看起来你正在使用jQuery。

 $('form[name="newForm"]').serializeArray();

这会产生一个类似于:

的数组
[{name:'test1', value:'value1'},...]

请参阅jQuery serializeArray

答案 2 :(得分:3)

jsFiddle:http://jsfiddle.net/Yw4Hc/3/

$('input.form-control').each(function() {
    alert($(this).attr('name') + " = " + $(this).val()); 
});

答案 3 :(得分:2)

有很多选择。

按标记

使用$('input')获取整个页面上的所有输入。这不受任何特定形式的限制。

组合选择器

您可以组合选择器$('input,select')

试一试:http://jsfiddle.net/s5jgd/

按标记,在元素

您可以使用find检索特定元素的所有输入。例如:

$('#myForm').find('input');

您也可以将此方法与组合选择器一起使用:

$('#myForm').find('input,select');

使用form.elements集合

有一组元素,可通过$('#myForm').elements

访问

通过为所有元素提供类

这是最灵活的选项,请使用$('.myElementClass')

<强>序列化

jQuery提供了一种序列化表单数据的方法;它将为您提供可用于请求的字符串格式的所有元素的列表。

$('#myForm').serialize()输出(例如)此网址编码的字符串:myElementA=my+input&myElementB=my+input+c&myElementC=my+input+c

$('#myForm').serializeArray()类似,但不是字符串,而是获取一个对象,表单元素名称作为与当前值对应的键。它看起来像这样:

{"myElementA":"my input", "myElementB":"my input b", "myElementC":"my input c"}

<强>结论

总而言之,这是基本的jQuery用法。我建议坐下来阅读手册和一些教程来扩展你的jQuery-foo。

<强>文档

答案 4 :(得分:1)

您可以使用jQuery each()函数

$(".form-control").each(function(){
  var value = $(this).val();
});

答案 5 :(得分:1)

form一个id(例如test-form)然后你可以这样做:

var formValues = $('#test-form').serialize();

答案 6 :(得分:1)

如果您想要一组值,可以将它们从<input>元素投影到map()链接到get()

var values = $("input[type=text]").map(function() {
    return this.value;
}).get();

答案 7 :(得分:0)

我想,有几种方法,取决于你将要用它做什么。

例如,您可以选择表单中的所有输入:

$('form input')

这将返回表示所有输入的jQuery对象数组。然后你可以遍历那个数组并获得每个数组的.val()

另一种选择可能是将整个表单序列化为JSON对象:

var data = $('form').serialize();

然后您可以根据需要操纵该JSON对象(data),或根据需要从中提取值。

答案 8 :(得分:0)

你可以这样做:

var inputValues = $("#newform .form-group input:text").map(function() {
    return this.value;
}).get();

答案 9 :(得分:-1)

类似的东西应该有效。

var value 5 = $(“#newform”)。find(“input”)。get(5).val();