2009-11-30 2 views
1

У меня есть форма с динамически создаваемыми элементами формы.Тип возвращаемого ввода с jquery

Мне нужно получить значение каждого элемента и отправить запрос 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?

ответ

1

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

0

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

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

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

Нравится: $ ('. Form_element [checked = true]'). Each (function() { alert ($ (this) .val()); });

0

Этот пример, вероятно, может быть улучшен, но должен сделать трюк.

$('.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"> 
1

Это делает то, что вы хотите. Внутри цикла он оставил ненужный бокс jQuery. Обрабатывает радио, флажок, текст, текстовое поле, выберите один. Не учитывается select-multiple, file, ....

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