Получить имена полей формы с помощью JavaScript или PHP? - PullRequest
0 голосов
/ 14 марта 2012

Есть ли способ вернуть список / массив всех имен полей, содержащихся в форме? Т.е., если я создал форму с 10 полями («имя», «электронная почта» и т. Д.) При отправке, я могу определить, какие имена элементов?

Ответы [ 7 ]

3 голосов
/ 14 марта 2012

В 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 - это массив всех имен элементов формы.

Обновление

Если вы хотите создать ассоциативный массив names: values в JS, вы можете сделать это:

$('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`
2 голосов
/ 14 марта 2012

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 - это по умолчанию Environment, Get, Post, Cookie и Сервер (в таком порядке) вы можете прочитать больше здесь ).

Если вы хотите просто получить имен , тогда вы можете использовать array_keys для любого из вышеперечисленных.

1 голос
/ 14 марта 2012

Сериализация jQuery: http://api.jquery.com/serialize/

$('form').submit(function() {
  alert($(this).serialize());
  return false;
});
1 голос
/ 14 марта 2012

массив $_POST содержит все поля, которые были отправлены, если метод формы был post. Если метод был get, то $_GET имеет поля формы (а также любые другие параметры get, которые попадают в URL)

0 голосов
/ 14 марта 2012

:input селектор найдет элементы формы в клиенте

http://api.jquery.com/input-selector/

демо http://jsfiddle.net/JBsbL/

$('form').submit(function() {
    var inputList = [];
    $(this).find(':input').each(function() {
        inputList.push(this.name);
    })
    alert(inputList.join(',  '))
    return false;
})​
0 голосов
/ 14 марта 2012

С JQuery вы можете узнать это, выбрав элементы ввода и используя attr('name');

С PHP:

вы можете перемещаться $_GET, $_POST с помощью foreachсписок ключей с помощью array_keys($_POST);

0 голосов
/ 14 марта 2012

Да, они являются ключами вашего $ _POST, например:

$_POST['name'] = 'whatever name was in the form';

Вы можете сделать print_r($_POST), чтобы увидеть все ключи.

(или $_GET в зависимости от способа отправки формы)

...