Получить поля ввода формы с помощью jQuery? - PullRequest
395 голосов
/ 04 октября 2008

У меня есть форма со многими полями ввода.

Когда я ловлю событие отправки формы с помощью jQuery, возможно ли получить все поля ввода этой формы в ассоциативном массиве?

Ответы [ 22 ]

0 голосов
/ 16 апреля 2016

Все ответы хорошие, но есть ли поле, которое вы хотели бы игнорировать в этой функции? Легко, присвойте полю свойство, например ignore_this:

<input type="text" name="some_name" ignore_this>

И в вашей функции сериализации:

if(!$(name).prop('ignorar')){
   do_your_thing;
}

Так вы игнорируете некоторые поля.

0 голосов
/ 08 декабря 2013

Надеюсь, это кому-нибудь поможет. :)

// This html:
// <form id="someCoolForm">
// <input type="text" class="form-control" name="username" value="...." />
// 
// <input type="text" class="form-control" name="profile.first_name" value="...." />
// <input type="text" class="form-control" name="profile.last_name" value="...." />
// 
// <input type="text" class="form-control" name="emails[]" value="..." />
// <input type="text" class="form-control" name="emails[]" value=".." />
// <input type="text" class="form-control" name="emails[]" value="." />
// </form>
// 
// With this js:
// 
// var form1 = parseForm($('#someCoolForm'));
// console.log(form1);
// 
// Will output something like:
// {
// username: "test2"
// emails:
//   0: ".@....com"
//   1: "...@........com"
// profile: Object
//   first_name: "..."
//   last_name: "..."
// }
// 
// So, function below:

var parseForm = function (form) {

    var formdata = form.serializeArray();

    var data = {};

    _.each(formdata, function (element) {

        var value = _.values(element);

        // Parsing field arrays.
        if (value[0].indexOf('[]') > 0) {
            var key = value[0].replace('[]', '');

            if (!data[key])
                data[key] = [];

            data[value[0].replace('[]', '')].push(value[1]);
        } else

        // Parsing nested objects.
        if (value[0].indexOf('.') > 0) {

            var parent = value[0].substring(0, value[0].indexOf("."));
            var child = value[0].substring(value[0].lastIndexOf(".") + 1);

            if (!data[parent])
                data[parent] = {};

            data[parent][child] = value[1];
        } else {
            data[value[0]] = value[1];
        }
    });

    return data;
};
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...