【问题标题】:How to get the value of all inputs in a form如何获取表单中所有输入的值
【发布时间】:2013-09-11 18:22:46
【问题描述】:

代码:

<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()),但是在不知道id的情况下如何从表单的开头依次获取输入值输入?

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

var value1 = $("test1").val();
var value2 = $("test2").val();
var value3 = $("test3").val();
var value4 = $("test4").val();
var value5 = $("test5").val();

当我们不知道输入的id 时,是否有人对如何获取值有任何想法?

【问题讨论】:

  • 你想要什么,一个数组?
  • 您想知道输入ID,否则为什么要解析它?当然你不能说一般的对象,但是当涉及到形式时,你是非常具体的。
  • @DavidThomas 如果我真的想分别获取每个值。但是数组也会很好。
  • @Jonast92 在我的测试代码中,所有输入都有 id,但是当我们不知道 id 输入时如何获取它们的值?
  • 解释你想要的最终结果,然后我们会想办法帮助你得到它。否则,我们只是在猜测,基于我们所知道的,或者可以,工作。

标签: jquery forms input


【解决方案1】:

试试:

$('form').serialize();

或:

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

【讨论】:

  • 第二个 sn-p 将返回未选中复选框的值,这可能是不可取的。
【解决方案2】:

看起来你正在使用 jQuery。

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

这会产生一个如下所示的数组:

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

jQuery serializeArray

【讨论】:

    【解决方案3】:

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

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

    【讨论】:

      【解决方案4】:

      你可以使用jQuery的each()函数

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

      【讨论】:

        【解决方案5】:

        有很多选择。

        按标签

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

        组合选择器

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

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

        按标签,在元素内

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

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

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

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

        使用form.elements 集合

        有一个元素集合,通过$('#myForm').elements访问

        通过给所有元素一个类

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

        序列化

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

        $('#myForm').serialize() 输出(例如)这个 url 编码的字符串:myElementA=my+input&amp;myElementB=my+input+c&amp;myElementC=my+input+c

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

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

        结论

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

        文档

        【讨论】:

        • @Strannik 糟糕,里面少了一个“t”!应该是固定的。
        【解决方案6】:

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

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

        【讨论】:

          【解决方案7】:

          如果您想要一个值数组,您可以将它们从&lt;input&gt; 元素投影到链接到get()map()

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

          【讨论】:

            【解决方案8】:

            我想有几种方法,具体取决于您要使用它做什么。

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

            $('form input')
            

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

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

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

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

            【讨论】:

              【解决方案9】:

              你可以这样做:

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

              【讨论】:

                【解决方案10】:

                与此类似的东西应该可以工作。

                var value5 = $("#newform").find("input").get(5).val();

                【讨论】:

                  猜你喜欢
                  • 1970-01-01
                  • 2011-02-28
                  • 1970-01-01
                  • 2023-01-12
                  • 1970-01-01
                  • 1970-01-01
                  • 2020-05-06
                  • 1970-01-01
                  • 2012-06-05
                  相关资源
                  最近更新 更多