JQuery 选中的 Primefaces 复选框无法正常工作
Primefaces checkboxes selected all by JQuery not working properly
我正在使用 JQuery 到 select 一组复选框...在视觉上效果很好。第一次,所有的检查都被提交为真实的。但是,如果我 select 全部,再次单击以取消 select 全部,然后再次单击 select 全部,当我提交表单时,对于 JSF,所有这些都被评估为 false。
function selectAllByClass(checkAll , classeCheckbox) {
var checked = checkAll.checked;
//to change the checked attribute
$('div.' + classeCheckbox + ' input[type=checkbox]').attr('checked',
checked);
if (checked) {
$('div.' + classeCheckbox + ' > div.ui-chkbox-box').each(function() {
$(this).addClass('ui-state-active');
$(this).children('span').addClass('ui-icon ui-icon-check');
});
} else {
$('div.' + classeCheckbox + ' > div.ui-chkbox-box').each(function() {
$(this).removeClass('ui-state-active');
$(this).children('span').removeClass('ui-icon ui-icon-check');
});
}
}
<p:outputPanel
id="parcelasPanel"
deferred="true"
deferredMode="visible"
delay="10"
styleClass="togglePanelEscondido escondido">
<p:dataTable styleClass="tabela_sgi"
value="#{cobranca.parcelas}"
var="parcela">
<p:column
headerText="Nº do Boleto(s)"
styleClass="alinhar_centro">
<h:outputText value="#{parcela.numeroBoleto}" />
</p:column>
<p:column
headerText="Nº Parcela(s)"
styleClass="alinhar_centro">
<h:outputText value="#{parcela.numeroParcela}/#{cobranca.quantidadeParcelas}" />
</p:column>
<p:column
headerText="Nº Reemissões"
styleClass="alinhar_centro">
<h:outputText value="#{parcela.numeroReemissoes}" />
</p:column>
<p:column
headerText="Vencimento"
styleClass="alinhar_centro">
<h:outputText value="#{parcela.dataVencimento}">
<f:convertDateTime />
</h:outputText>
</p:column>
<p:column
headerText="Valor"
styleClass="alinhar_direita">
<h:outputText value="#{parcela.valor}">
<f:convertNumber
type="currency"
currencyCode="BRL" />
</h:outputText>
</p:column>
<p:column
headerText="Valor Atualizado"
styleClass="alinhar_direita">
<h:outputText value="#{parcela.valorAtualizado}">
<f:convertNumber
type="currency"
currencyCode="BRL" />
</h:outputText>
</p:column>
<p:column
headerText="Situação"
styleClass="alinhar_centro tamanho_col_situacao">
<h:outputText value="#{parcela.situacao}" styleClass="bold" />
</p:column>
<p:column
headerText="Negociar"
styleClass="alinhar_centro tamanho_col_negocias">
<p:selectBooleanCheckbox
value="#{negociacaoBaseBean.parcelasSelecionadas[parcela]}"
disabled="#{!negociacaoBaseBean.tipoNegociacaoSelecionado.aceitaParcelas or (negociacaoBaseBean.tipoNegociacaoSelecionado.eReemissaoENaoPodeReemitir(parcela.podeReemitir))}"
styleClass="#{negociacaoBaseBean.tipoNegociacaoSelecionado.aceitaParcelas and !(negociacaoBaseBean.tipoNegociacaoSelecionado.eReemissaoENaoPodeReemitir(parcela.podeReemitir))?'selecionaParcelaOn':'selecionaParcelaOff'}">
</p:selectBooleanCheckbox>
</p:column>
</p:dataTable>
</p:outputPanel>
使用 prop()
而不是 attr()
。您需要更改元素上的实际 属性,而不仅仅是属性。
我正在使用 JQuery 到 select 一组复选框...在视觉上效果很好。第一次,所有的检查都被提交为真实的。但是,如果我 select 全部,再次单击以取消 select 全部,然后再次单击 select 全部,当我提交表单时,对于 JSF,所有这些都被评估为 false。
function selectAllByClass(checkAll , classeCheckbox) {
var checked = checkAll.checked;
//to change the checked attribute
$('div.' + classeCheckbox + ' input[type=checkbox]').attr('checked',
checked);
if (checked) {
$('div.' + classeCheckbox + ' > div.ui-chkbox-box').each(function() {
$(this).addClass('ui-state-active');
$(this).children('span').addClass('ui-icon ui-icon-check');
});
} else {
$('div.' + classeCheckbox + ' > div.ui-chkbox-box').each(function() {
$(this).removeClass('ui-state-active');
$(this).children('span').removeClass('ui-icon ui-icon-check');
});
}
}
<p:outputPanel
id="parcelasPanel"
deferred="true"
deferredMode="visible"
delay="10"
styleClass="togglePanelEscondido escondido">
<p:dataTable styleClass="tabela_sgi"
value="#{cobranca.parcelas}"
var="parcela">
<p:column
headerText="Nº do Boleto(s)"
styleClass="alinhar_centro">
<h:outputText value="#{parcela.numeroBoleto}" />
</p:column>
<p:column
headerText="Nº Parcela(s)"
styleClass="alinhar_centro">
<h:outputText value="#{parcela.numeroParcela}/#{cobranca.quantidadeParcelas}" />
</p:column>
<p:column
headerText="Nº Reemissões"
styleClass="alinhar_centro">
<h:outputText value="#{parcela.numeroReemissoes}" />
</p:column>
<p:column
headerText="Vencimento"
styleClass="alinhar_centro">
<h:outputText value="#{parcela.dataVencimento}">
<f:convertDateTime />
</h:outputText>
</p:column>
<p:column
headerText="Valor"
styleClass="alinhar_direita">
<h:outputText value="#{parcela.valor}">
<f:convertNumber
type="currency"
currencyCode="BRL" />
</h:outputText>
</p:column>
<p:column
headerText="Valor Atualizado"
styleClass="alinhar_direita">
<h:outputText value="#{parcela.valorAtualizado}">
<f:convertNumber
type="currency"
currencyCode="BRL" />
</h:outputText>
</p:column>
<p:column
headerText="Situação"
styleClass="alinhar_centro tamanho_col_situacao">
<h:outputText value="#{parcela.situacao}" styleClass="bold" />
</p:column>
<p:column
headerText="Negociar"
styleClass="alinhar_centro tamanho_col_negocias">
<p:selectBooleanCheckbox
value="#{negociacaoBaseBean.parcelasSelecionadas[parcela]}"
disabled="#{!negociacaoBaseBean.tipoNegociacaoSelecionado.aceitaParcelas or (negociacaoBaseBean.tipoNegociacaoSelecionado.eReemissaoENaoPodeReemitir(parcela.podeReemitir))}"
styleClass="#{negociacaoBaseBean.tipoNegociacaoSelecionado.aceitaParcelas and !(negociacaoBaseBean.tipoNegociacaoSelecionado.eReemissaoENaoPodeReemitir(parcela.podeReemitir))?'selecionaParcelaOn':'selecionaParcelaOff'}">
</p:selectBooleanCheckbox>
</p:column>
</p:dataTable>
</p:outputPanel>
使用 prop()
而不是 attr()
。您需要更改元素上的实际 属性,而不仅仅是属性。