使用javascript或php获取表单字段名称?

时间:2012-03-14 18:37:22

标签: php javascript jquery forms field

有没有办法返回表单中包含的所有字段名称的列表/数组?即如果我在提交时制作了包含10个字段('name','email'等...)的表单,我可以确定元素名称是什么?

8 个答案:

答案 0 :(得分:3)

在JavaScript中,我们可以获得每个表单元素的name属性,如下所示:

$('form').on('submit', function () {
    var names = [];
    $.each($(this).find('input, textarea'), function () {
        names.push(this.name);
    });
});

这会收集表单中每个nameinput元素的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中创建namesvalues的关联数组,你可以这样做:

$('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)

的JavaScript

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)

PHP

是。它们都在超级全局$_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)