Получить все входные данные в div для запроса ajax - PullRequest
3 голосов
/ 15 мая 2011

Я пытаюсь получить все входные текстовые поля, радиогруппы, флажки и т. Д. У меня возникают проблемы с получением выбранных значений радио и флажков, я не могу понять это.

Я могу получить текстовые поля, но не могу выбрать "выбранный" в нужном месте.На данный момент он просто получает первое значение для радио / флажки, а не выбранное значение.

$('#form_1 input').each(function(key)               
    formData += '&'+$('#'+this.id).attr('name')+'='+$('#'+this.id).val();   
});

Спасибо

EDITED

$('#form_1 input').each(function(key, value) {              
    if ((this.type === "radio" || this.type === "checkbox") && this.checked === true) {
         val = this.value;
    } else {
         val = this.value;
    }

    alert($('#'+this.id).attr('name') + ' = ' + val);
    formData += '&'+$('#'+this.id).attr('name')+'='+val;    
});

Хорошо, теперь я получаю все значения для радио и т. Д., Поэтому я на шаг ближе.Просто нужно получить значения выбранных радиостанций сейчас.

Спасибо

Ответы [ 3 ]

3 голосов
/ 15 мая 2011

Просто используйте метод serialize() [документы] .

Он позаботится о получении значений выбранных элементов для вас.

var formData = $('#form_1').serialize();

Из документов:

Метод .serialize () может действовать на объект jQuery, который выбрал отдельные элементы формы, такие как, и.Тем не менее, обычно проще выбрать сам тег для сериализации:

$('form').submit(function() {
  alert($(this).serialize());
  return false;
});

. В результате получается стандартная строка запроса:

a=1&b=2&c=3&d=4&e=5
2 голосов
/ 15 мая 2011
var val;
if (this.type === "radio" || this.type === "checkbox") {
     val = this.checked;
} else {
     val = this.value;
}

Для радиостанций и флажков вы заботитесь о проверенном атрибуте.

Обновление

Вы написали

(this.type === "radio" || (this.type === "checkbox" && this.checked === true))

Вы имели в виду

((this.type === "radio" || this.type === "checkbox") && this.checked === true)

Эти скобки нужны в нужном месте.

Дальнейшее редактирование

Логика была немного нарушена.

В основном то, что вы хотите.

if ((this.type === "radio" || this.type === "checkbox") && this.checked === false) {
    return;
}

Это означает, что если вы не отметили радио / флажок, вы ничего не делаете.

0 голосов
/ 15 мая 2011

Это не отвечает на ваш вопрос напрямую, но похоже, что вы пытаетесь достичь чего-то, что уже доступно - вы можете проверить serialize() - используйте это как var formData = $('#form_1').serialize()

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