有没有办法返回表单中包含的所有字段名称的列表/数组?即如果我在提交时制作了包含10个字段('name','email'等...)的表单,我可以确定元素名称是什么?
答案 0 :(得分:3)
在JavaScript中,我们可以获得每个表单元素的name
属性,如下所示:
$('form').on('submit', function () {
var names = [];
$.each($(this).find('input, textarea'), function () {
names.push(this.name);
});
});
这会收集表单中每个name
或input
元素的textarea
属性,并将它们放在一个数组names
中。
请注意,.on()
是jQuery 1.7的新版本,在这种情况下与使用.bind()
相同:http://api.jquery.com/on
在PHP中,您可以遍历每个$_GET
或$_POST
变量:
<?php
$names = array();
if (isset($_POST) && !empty($_POST)) {
foreach ($_POST as $key => $val) {
//$key is the name you wanted, and $val is the value of that input
$names[] = $key;
}
}
?>
同样,$names
变量是表单元素的所有名称的数组。
如果你想在JS中创建names
:values
的关联数组,你可以这样做:
$('form').on('submit', function () {
var names = {};
$.each($(this).find('input, textarea'), function () {
names[this.name] = this.value;
});
});
现在您可以像这样访问names
变量:
alert(names.email);//this will alert the value of the input who's name is `email`
答案 1 :(得分:2)
JS的原始方法是:
var inputs = document['<your form name>'].getElementsByTagName("input");
for(var i in lst)
if(lst[i] && lst[i].name)console.log(lst[i].name)
是。它们都在超级全局$_GET
(对于所有GET变量),$_POST
(如果您的表单有method="POST"
),$_REQUEST
($_REQUEST
是,默认环境,获取,发布,Cookie和服务器(按此顺序)you can read more here)。
如果您只想获取名称,那么您可以在上述任何内容中使用array_keys
。
答案 2 :(得分:1)
$_POST
数组包含表单方法发布时已提交的所有字段。如果方法是get,则$_GET
具有表单字段(以及恰好位于URL中的任何其他get参数)
答案 3 :(得分:1)
jQuery序列化: http://api.jquery.com/serialize/
$('form').submit(function() {
alert($(this).serialize());
return false;
});
答案 4 :(得分:0)
是的,它们是$ _POST的键,例如:
$_POST['name'] = 'whatever name was in the form';
您可以print_r($_POST)
查看所有密钥。
(或$_GET
,具体取决于您的表单提交方式)
答案 5 :(得分:0)
使用JQuery,您可以通过选择输入元素并使用attr('name');
使用PHP:
您可以使用foreach遍历$_GET
,$_POST
您还可以使用array_keys($_POST)
;
答案 6 :(得分:0)
:input
选择器将在客户端
http://api.jquery.com/input-selector/
demo http://jsfiddle.net/JBsbL/
$('form').submit(function() {
var inputList = [];
$(this).find(':input').each(function() {
inputList.push(this.name);
})
alert(inputList.join(', '))
return false;
})
答案 7 :(得分:0)
这些解决方案完全解决了您的问题,但是它们写为使用jQuery。如今,jQuery不再是大众库。我们可以更轻松地使用纯JavaScript解决。
[...document.querySelectorAll("form input, form textarea, form select")].map(el => el.name)