вернуть тип ввода с помощью jquery - PullRequest
1 голос
/ 30 ноября 2009

У меня есть форма с динамически созданными элементами формы.

Мне нужно получить значение каждого элемента и отправить запрос ajax, чтобы убедиться, что данные в порядке (простая часть). Я могу получить значение каждого элемента достаточно легко, но проблема заключается в переключателях. Например:

<input type = 'radio' class = 'form_element' value = '1'>
<input type = 'radio' class = 'form_element' value = '1'>
<input type = 'radio' class = 'form_element' value = '1'>

если я сделаю что-то вроде ...

$('.form_element').each(function(){
     alert($(this).val());
});

будет печатать значения всех переключателей, независимо от того, отмечен он или нет.

Мне нужно, чтобы он возвращал только значение проверенного.

Итак, есть ли способ вернуть тип входного элемента из jquery?

Ответы [ 5 ]

1 голос
/ 30 ноября 2009

Это делает то, что вы хотите. Внутри цикла он оставил ненужный бокс JQuery. Ручки радио, флажок, текст, текстовое поле, выберите один. Не учитывает select-множественный файл, ....

$('.form_element').each(function() {
  switch(this.type) {
    case 'radio':
    case 'checkbox': if (this.checked) alert(this.value); break;
    case 'text':
    case 'textarea':
    case 'select-one': alert(this.value); break;
    default: alert("unhandled type: "+this.type);
  }
});
1 голос
/ 30 ноября 2009

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

Как: $ ('. Form_element [check = true]'). Each (function () { оповещения ($ (это) .val ()); });

1 голос
/ 30 ноября 2009

Используйте $('.form_element:checked'), чтобы получить только значение отмеченных переключателей.

0 голосов
/ 30 ноября 2009

Этот пример, вероятно, можно улучшить, но он должен помочь.

$('.form_element').each(function(){
    if ($(this).attr("type") == "radio") {
        if ($(this).attr("checked") == true) {
            alert($(this).val());
        }
    } else {
        alert($(this).val());
    }
});

Я протестировал его, используя следующий HTML-код, чтобы определить, работает ли он (ваш пример имел одинаковое значение для каждой опции радио):

<input type='radio' name="a" class="form_element" value="1">
<input type='radio' name="a" class="form_element" value="2">
<input type='radio' name="a" class="form_element" value="3">
0 голосов
/ 30 ноября 2009

попробовать:

$('.form_element:checked').each(function(){
     alert($(this).val());
});
...