Jquery自动获取div中所有元素的值

Dan*_*ilo 12 html javascript forms jquery

我有一个主div,里面有很多输入文字和单选按钮.像这样:

<div id="mainDiv">
   <input type="text" name="text-1" /> <br/>

   <input type="radio" name="radio-1" />Yes
   <input type="radio" name="radio-1" />No <br/>

   <input type="text" name="text-2" /> <br/>
   <input type="text" name="text-3" /> <br/>
</div>
<img src="img/img.gif" onclick="getAllValues();" />
Run Code Online (Sandbox Code Playgroud)

我想在JQuery中定义函数"getAllValues()",它获取"mainDiv"中的所有值并将它们保存在字符串中.有可能的?

Ror*_*san 21

要实现此目的,您可以选择所有表单域并使用map()它们的值创建一个数组,可以根据它们检索它们type.试试这个:

function getAllValues() {
    var inputValues = $('#mainDiv :input').map(function() {
        var type = $(this).prop("type");

        // checked radios/checkboxes
        if ((type == "checkbox" || type == "radio") && this.checked) { 
           return $(this).val();
        }
        // all other fields, except buttons
        else if (type != "button" && type != "submit") {
            return $(this).val();
        }
    })
    return inputValues.join(',');
}
Run Code Online (Sandbox Code Playgroud)

if声明在这里可以连接在一起,但我把它们分开的清晰度.

  • `类型!=“按钮”|| type != "submit"` 这不应该是 `&amp;&amp;` 而不是 `||` 吗?否则你会捡起所有东西。 (2认同)

小智 6

尝试类似的东西:

function getAllValues() {
  var allVal = '';
  $("#mainDiv > input").each(function() {
    allVal += '&' + $(this).attr('name') + '=' + $(this).val();
  });
  alert(allVal);
}
Run Code Online (Sandbox Code Playgroud)