Набор SelectOneRadio проверен на radioButton

Я хочу установить состояние, проверенное на p: selectOneRadio, используя javascript.

Мне удается это сделать, но это работает только с первым элементом в списке selectOneRadio, вот код.

<h:form id="formID">
    <p:outputPanel id="customPanel" style="margin-bottom:10px">
        <p:selectOneRadio id="customRadio" value="#{radioView.color}" layout="custom">
            <f:selectItem itemLabel="Red" itemValue="Red" />
            <f:selectItem itemLabel="Green" itemValue="Green" />
            <f:selectItem itemLabel="Blue" itemValue="Blue" />
        </p:selectOneRadio>

        <h:panelGrid columns="2" cellpadding="5" border="1">
            <p:radioButton id="opt1" for="customRadio" itemIndex="0" />
            <h:outputLabel for="opt1" value="Red" />

            <p:radioButton id="opt2" for="customRadio" itemIndex="1" />
            <h:outputLabel for="opt2" value="Green" />

            <p:radioButton id="opt3" for="customRadio" itemIndex="2" />
            <h:outputLabel for="opt3" value="Blue" />

            <p:commandButton value="select" ajax="true" onclick="selectRadios()" update="@form"/>
        </h:panelGrid>
    </p:outputPanel>
</h:form>

JavaScript

<script type="text/javascript">
    function selectRadios() {
        jQuery("input[name='formID:customRadio']:first").prop('checked', true);
    }
    ;
</script>

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

Кроме того, если есть другой способ изменить состояние этой радиокнопки на проверенное без использования javascript, пожалуйста, дайте мне знать.

Спасибо за помощь.

-Кева


person Kevin Valdez    schedule 24.10.2016    source источник
comment
Какой препроцессор HTML вы используете? Можете ли вы опубликовать созданный HTML, пожалуйста?   -  person Louys Patrice Bessette    schedule 25.10.2016
comment
Вы пытаетесь выбрать все радиобоксы? Если да, вы используете SelectOneRadio, который может выбрать только один элемент в списке.   -  person Mark Vincent Osea    schedule 25.10.2016
comment
@MarkVincentOsea Я не пытаюсь выбрать все. Все, что мне нужно, это код для выбора одного переключателя, когда я нажимаю кнопку команды. Как видите, мне это удается, но только для первого переключателя (первого из трех), как я могу сделать это для второго или третьего?   -  person Kevin Valdez    schedule 25.10.2016
comment
@LouysPatriceBessette, что вы подразумеваете под препроцессором HTML?   -  person Kevin Valdez    schedule 25.10.2016
comment
Я имею в виду этот синтаксис кодирования HTML <[tagname]:[type ? ] [attributes]>... Это не обычный HTML. Для его интерпретации используется препроцессор. Я не знаю какой... Их много. Так что, если вы можете опубликовать настоящий HTML, это поможет.   -  person Louys Patrice Bessette    schedule 25.10.2016
comment
@LouysPatriceBessette Я использую html на базе PrimeFaces, и я не знаю, получаю ли я то, о чем вы спрашиваете, а именно тег html, который я использую <html xmlns="http://www.w3.org/1999/xhtml" xmlns:h="http://java.sun.com/jsf/html" xmlns:f="http://java.sun.com/jsf/core" xmlns:ui="http://java.sun.com/jsf/facelets" xmlns:p="http://primefaces.org/ui">   -  person Kevin Valdez    schedule 26.10.2016
comment
Doctype не имеет значения. Но я просто сосредоточился на ключевом слове Primefaces, о котором до сих пор не заботился (мой плохой). Похоже, это «набор компонентов JSF с различными расширениями» Справочник, стр. 10/634. Я не буду это читать. Чтобы предоставить простой HTML-код для вашего вопроса, который вы можете редактировать, вам нужно скопировать /paste соответствующий источник страницы, которую вы тестируете. Его можно просмотреть, добавив view-source: прямо перед URL-адресом... В Chrome... (в других браузерах не знаю).   -  person Louys Patrice Bessette    schedule 26.10.2016
comment
В этом «наборе» есть HTML-редактор... Именно это я имел в виду под HTML-препроцессором. ;)   -  person Louys Patrice Bessette    schedule 26.10.2016


Ответы (1)


Я предпринял вторую попытку...увидеть... ваш HTML.

HTML-результат вашего «включенного редактора Primefaces» очень близок к тому, что я м публикую сейчас в приведенном ниже фрагменте. (Довольно просто, после синтаксического барьера)

Итак, взгляните на код jQuery...
Он должен быть близок к вашей основной задаче.

Ваш вопрос №1: «Когда я загружаю страницу и нажимаю кнопку commandButton, она проверяет первый переключатель, и все в порядке, но я также хочу знать, как проверить два других»

природа радиокнопок состоит в том, чтобы они были эксклюзивными внутри группы.
Ищите флажки, если вы хотите, чтобы многие из них были отмечены.

Ваш вопрос №2: «Кроме того, если есть другой способ изменить состояние этой радиокнопки на отмеченное без использования javascript, пожалуйста, дайте мне знать».

→ Да... Загрузка.
Через HTML-атрибут checked
< br> ДРУГОЕ
→ №



БОНУС
Я добавил в него console.log при любом изменении состояния (сделанном пользователем) для select и radios.

var radioCollection = $("input[name='myRadio']");

var radioCheckedVal = 0;  // 0 is first element in zero-based collection.
                          // Change to make another radio selected onload.

// 1st radio input is selected onload
$(radioCollection).first().prop('checked', true);

$(radioCollection).click(function(){
    if( $(this).is("input:checked") ){
        radioCheckedVal = $(this).val();
        console.log( "Radio input checked: "+radioCheckedVal );
    }
});

$("#customPanel").change(function(){
    selectVal = $(this).val();
    console.log( "Dropdown selected: "+selectVal );
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<form id="formID">
  <select id="customPanel" style="margin-bottom:10px"><!-- p:outputPanel ?? -->
    <option value="Red">Red</option>
    <option value="Green">Green</option>
    <option value="Blue">Blue</option>
  </select>
  <table>
    <tr>
      <td>
        <input type="radio" name="myRadio" id="opt1" value="Red">
      </td>
      <td>
        <label for="opt1">Red</label>
      </td>
    </tr>
    <tr>
      <td>
        <input type="radio" name="myRadio" id="opt2" value="Green">
      </td>
      <td>
        <label for="opt1">Green</labe2>
      </td>
    </tr>
    <tr>
      <td>
        <input type="radio" name="myRadio" id="opt3" value="Blue">
      </td>
      <td>
        <label for="opt1">Blue</labe3>
      </td>
    </tr>
  </table>
</form>

person Louys Patrice Bessette    schedule 26.10.2016