2009-09-05 2 views
4

Прототип отличный, но с выпуском 1.6.1 библиотека по-прежнему не позволяет получать/устанавливать сгруппированные входы (флажки и переключатели.) Я бы хотел способ получить массив выбранных значений с помощью $F($("form").checkboxes). Я бы хотел установить эти флажки в массив значений, с другой стороны.Получить/установить значения флажка и радио кнопки с использованием прототипа

Идеи?

ответ

1

я в конечном итоге написание мои собственные расширения Prototype для этого. Вы можете посмотреть их on Github. Вот заметка из проекта:

«Эти расширения позволяют использовать удобный синтаксис $ F() Prototype для получения и установки значений этих сгруппированных элементов ввода. Они были протестированы с помощью Prototype 1.6.0.3 и 1.6. 1. В этих расширениях есть и другие биты. Подробнее см. В разделе «README.html file».

Ответы от sawgee и Los очень ценятся, но мне хотелось получить более интегрированное решение, которое позволило бы мне работать с флажками и переключателями с естественным синтаксисом $ F(), который я уже использую с другими элементами формы.

9

Вы всегда можете сделать что-то вроде этого: (предполагается, что у вас есть свои флажки в классе checkboxes).

var checkedList = []; 
$$('.checkboxes').each(function(ele){ 
    if($(ele).checked) 
    { 
     checkedList.push($(ele).name); 
    } 
}); 
6

редактировать - просто понял, я неправильно вопрос, приведенный ниже код только хорошо для установки значений:

var form = $('options'); 
checkboxes = form.getInputs('checkbox'); 
checkboxes.each(function(e){ e.checked = 0 }); 
// or even checkboxes.invoke('checked',0); 

может, возможно, использовать что-то вроде этого, хотя:

var cels = new Array(); 
$$('checkbox[checked="checked"]').each(el){ 
    cels.push(el.value); 
} 
0

Учитывая HTML:

<label><input type="radio" id="choiceA" name="choices" value="A" checked="checked" /> A</label> 
<label><input type="radio" id="choiceB" name="choices" value="B" /> B</label> 

Это делает запрос стилей CSS и возвращает значение для всех элементов.

$$('input:checked[type="radio"][name="group-name"]').pluck("value"); 
4

Это только для радиокнопки, но все же полезно.

Получить

$$('input:checked[name="radio_name"]')[0].value 

Set

$$('input[name="radio_name"][value="to_select"]')[0].checked = true 

"radio_name" это название вашей радиостанции группы. «to_select» - какое бы значение вы ни выбрали. «[0]» работает, потому что одновременно можно проверять только одну радиокнопку.

На боковой ноте я вроде как не прототип. В jQuery намного проще, но вы должны использовать то, что вам нужно использовать.

Смежные вопросы