2015-09-21 6 views
1

Мне нужно знать, как выполнять итерацию по списку p-элементов p: selectBooleanCheckbox и выяснить, нет или нет, они были проверены. Я узнал, как их найти, но не как на самом деле получить или нет, они верны или ложны, мне было интересно, сможет ли кто-нибудь здесь помочь в этом.Как найти в jQuery, был ли установлен флажок p: selectBooleanCheckbox

Как можно меньше кода, это то, что я делаю сейчас, чтобы вернуть фактический элемент, я использовал jquery: checked, а также .val() и несколько других методов, но ни один из них не работает , Я также пробовал просеивать код в объекте элемента в консоли, ища все, что выделяется, и я тоже не смог найти ничего. Любая помощь будет принята с благодарностью.

<?xml version='1.0' encoding='UTF-8' ?> 
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<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"> 
<body> 
    <ui:composition template="./../../WEB-INF/template.xhtml"> 
     <ui:define name="content"> 
      <div style="margin-bottom: 350px;"> 
       <p:outputLabel for="coop_sent" value="CO-OP Sent"/> 
       <p:selectBooleanCheckbox name="coop_sent" styleClass="pc"  widgetVar="coop_sent" id="coop_sent" value="#{editProjectsBean.pc.co_opSen}"/> 

       <script type="text/javascript"> 
        for (var propertyName in PrimeFaces.widgets) { 
         if (PrimeFaces.widgets[propertyName] instanceof  PrimeFaces.widget.SelectBooleanCheckbox){ 
          if (PrimeFaces.widgets[propertyName].widgetVar ===  'coop_sent') { 
           console.log($('PrimeFaces.widgets[propertyName].widgetVar.coop_sent')); 
          } 
         } 
        } 
       </script> 
      </div> 
     </ui:define> 
    </ui:composition> 
</body> 
</html> 
+0

, где вы планируете искать его? в отображаемом html? или в вашем бэкбоне? – Fritz

+0

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

+0

'template =" ./../../ WEB-INF/template.xhtml «Избавьтесь от этой« ../' ерунды. Это всегда относится к корневому веб-сайту, поэтому просто используйте 'template ="/WEB-INF/template.xhtml ". – BalusC

ответ

0

Ну с чего я пытался, используя этот тег:

<p:selectBooleanCheckbox value="#{Bean.checkbox}" styleClass="test"/>

тонированное HTML заключается в следующем:

<div id="tableForm:j_id868283402_33c0fe0b" class="ui-chkbox ui-widget test"> 
    <div class="ui-helper-hidden-accessible"> 
     <input id="tableForm:j_id868283402_33c0fe0b_input" type="checkbox" name="tableForm:j_id868283402_33c0fe0b_input"> 
    </div> 
    <div class="ui-chkbox-box ui-widget ui-corner-all ui-state-default ui-state-active"> 
     <span class="ui-chkbox-icon ui-icon ui-c ui-icon-blank"></span> 
    </div> 
</div> 

переключая флажок будет просто заменить ui-icon-blank на ui-icon-check в теге <span> и наоборот.

Я добавил styleClass="test" в тег <p:selectBooleanCheckbox>. Я думаю, вы можете просто использовать этот .test .ui-chkbox-box > span, чтобы выбрать тег <span> и определить значения в его атрибуте класса, будь он пустым или отмеченным.

2

Что касается конкретного вопроса, связанный объект виджета имеет только функцию isChecked().

<p:selectBooleanCheckbox widgetVar="foo" ... /> 
var checked = PF("foo").isChecked(); 

Смотрите также this blog для введения о том, как исследовать виджет вар и все доступные функции.

Что касается фактического функционального требования, вопрос немного запутанный и неоднозначный, поскольку вам кажется, что вы заинтересованы в сканировании через несколько компонентов флажков, но фрагмент кода jQuery действительно интересует только один. Я предполагаю, что вы на самом деле включаете этот фрагмент кода несколько раз на итерации, но вы столкнулись с проблемой, что в конечном итоге вы нашли только один <p:selectBooleanCheckbox> виджетов в PrimeFaces.widgets, который заставил вас задать этот слишком общий вопрос.

Вы должны указывать имя varget var, например. индекс итерации или так далее.

<p:selectBooleanCheckbox widgetVar="foo_#{index}" ... /> 

Альтернатива A (лучше) заключается в том, чтобы просто дать им общий класс стиля и вместо этого переместить дерево DOM HTML. Есть скрытый <input type="checkbox">, который вы могли бы просто захватить и проверить состояние checked.

<p:selectBooleanCheckbox ... styleClass="pc" /> 
if ($(".ui-chkbox.pc input[type=checkbox]:checked").length) { 
    // At least one is checked. 
} 

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

  • Нет связанных вопросов^_^