2017-03-31 21 views
-2

我有与含有值几个输入字段的网页:提取值

<input type="text" id="input_1" value="Apple"> 
<input type="text" id="input_2" value="Pear"> 

我需要的Javascript/jQuery来提取这些值并将它们存储在一个这样的数组:

var myArray = ["Apple", "Pear"]; 

有没有人知道一种方法来做到这一点?

谢谢!

+1

你的意思是'无功myArray的= $( “#INPUT_1”)。VAL(),$( “#INPUT_2”)。VAL()]'? - 为什么不查看jQuery手册?这是真正的基本东西 – mplungjan

+0

...或'Array.from(document.querySelectorAll('input'))。map(x => x.value);' –

+0

太基本了!做一点阅读! – funcoding

回答

1

您可以使用jQuery map()get()返回值的数组。

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

 
console.log(myArray)
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.0/jquery.min.js"></script> 
 
<input type="text" id="input_1" value="Apple"> 
 
<input type="text" id="input_2" value="Pear">

+0

一个非常好的和干净的解决方案。非常感谢Nenad Vracar :) – elton73

1

您可以通过输入标签必须循环:

var data = []; 
 
var inputs = document.getElementsByTagName('input'); 
 
for(var i=0; i< inputs.length; i++) 
 
{ 
 
    data.push(inputs[i].value); 
 
} 
 
console.log(data);
<input type="text" id="input_1" value="Apple"> 
 
<input type="text" id="input_2" value="Pear">

如果您使用JQuery

var data = []; 
 
    $('input').each(function(){ 
 
     data.push($(this).val()); 
 
    }); 
 
    console.log(data);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<input type="text" id="input_1" value="Apple"> 
 
    <input type="text" id="input_2" value="Pear">

优化JQuery的:

 var data = []; 
 
     $(":text").each(function(){ //only searches for input type="text" 
 
      data.push($(this).val()); 
 
     }); 
 
     console.log(data);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<input type="text" id="input_1" value="Apple"> 
 
<input type="text" id="input_2" value="Pear">

UPDATE

我会强烈建议您使用在所有输入元件的共用类,然后依次通过他们像$('.the_class')为它甚至更加优化。

+0

Works fine.Sweet! – elton73

+0

感谢您的更新,因为可能存在其他输入元素,我想从提取其值中排除。 – elton73

1

jQuery解决方案。

var arr = []; 
 
$('input').each(function(){ 
 
    arr.push($(this).val()); 
 
}); 
 
console.log(arr);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<input type="text" id="input_1" value="Apple"> 
 
<input type="text" id="input_2" value="Pear">

或纯JS的解决方案。

var elems = document.querySelectorAll('input[type="text"]'), 
 
    res = Array.from(elems).map(v => v.value); 
 
    console.log(res);
<input type="text" id="input_1" value="Apple"> 
 
<input type="text" id="input_2" value="Pear">

+1

jQuery和vanilla jS的答案。太好了! – elton73

1

使用document.querySelectorAllArray#map

var result = [].map.call(document.querySelectorAll('input'), function (e) { 
 
    return e.value 
 
}) 
 

 
console.log(result)
<html> 
 
    <body> 
 
     <input type="text" id="input_1" value="Apple"> 
 
     <input type="text" id="input_2" value="Pear"> 
 
    </body> 
 
</html>