2016-08-14 122 views
0

我有这样的代码工作正常!:HTML输入数组:如何获得HTML输入数组值使用javascript

<script> 
 
function get(userfirstname, userlastname){ 
 
\t alert(userfirstname); 
 

 
\t return false; 
 
} 
 
</script> 
 

 
<form action="" method="POST"> 
 
    <input type="text" name="userfirstname"> 
 
    <input type="text" name="userlastname"> 
 
    <input type="submit" onclick="return get(userfirstname.value, userlastname.value);"> 
 
</form>

我试图用一个数组想赶输入值这样的:

<script> 
 
function get(user){ 
 
\t alert(user["firstname"].value); 
 

 
\t return false; 
 
} 
 
</script> 
 

 
<form action="" method="POST"> 
 
    <input type="text" name="user[firstname]"> 
 
    <input type="text" name="user[lastname]"> 
 
    <input type="submit" onclick="return get(user);"> 
 
</form>

我尝试了很多不同的场景,没有点:(

任何提示,将不胜感激。

+1

谢谢你的评论,我如何让他们在对象? –

+0

你好! –

回答

1

你可以简单地针对form元素的onclick处理程序中,查询所有input元素,在它们之间迭代和构建array你正在寻找。

下面是一个例子,你可以做什么来建立一个持有每个输入元素名称和值的对象数组,除了禁用一次和提交元素。

function get(evt){ 
 
    var fields = []; 
 
    event.target.parentElement 
 
    .querySelectorAll('input:not([disabled]):not([type="submit"])').forEach(function(e) { 
 
    fields.push({name: e.name, value: e.value}); 
 
    }) 
 
    console.log(fields); 
 
    return false; 
 
}
<form> 
 
    <input type="text" name="firstname" placeholder="Name"><br> 
 
    <input type="text" name="lastname" placeholder="Surename"><br> 
 
    <input type="text" name="foo" value="foo will be excluded" disabled><br> 
 
    <input type="submit" onclick="return get();"> 
 
</form>

+0

这是否像HTML数组输入一样工作?,像用户[名字]和用户[姓氏]? –

+1

不知道是否有像HTML Array Input *之类的东西。现在可能有服务器端语言,现在如何处理这些类型的输入字段命名风格,将它们转换为'array',就像PHP一样,我想。但我可以问为什么这对你很重要?从我给你的例子中,你可以建立一个数组或对象,以及你喜欢的任何结构。 name属性中不需要数组语法。 – DavidDomain

+0

我试过你的代码!它为我工作,谢谢你,我的意思是HTML数组输入,是这样的:

1

一个jQuery的方法来得到这个

function get(){ 
    var fields = []; 
    var arr = $('form').not('input[type="submit"]').find('input[type="text"]') 
    $(arr).each(function(i,val){ 
     fields.push({name:$(val).attr('name'),value:$(val).val()}) 
    }) 
} 
你不能。在JS,你必须让他们中的对象要做到这一点
+0

这似乎有点过于复杂。使用jQuery,您可以简单地使用[.serializeArray()](https://api.jquery.com/serializeArray/),它完全可以做到这一点,还有更多。 ;) – DavidDomain

+0

你的代码工作!谢谢:),如何,我想使用JavaScript代码,所以先生@DavidDomain,解决了问题:) –