逻辑错误JavaScript

时间:2013-07-17 12:23:17

标签: jquery checkbox

在Javascript中我逻辑上遇到了问题。第二个功能取消上述功能。我该怎么解决?

OBS:我无法移动'html'并使用'onclick'

$(document).ready(function(){
    $("input[name='wpcf-pde']").change(function() {
        if($(this).is(':checked')) {
         $("input[name='wpcf-pnps']").prop("disabled", "true");       
         $("input[name='wpcf-pspitlp']").prop("disabled", "true");
         $("input[name='wpcf-ppp']").prop("disabled", "true");
         $("input[name='wpcf-pto']").prop("disabled", "true"); 
         $("input[name='wpcf-pto2']").prop("disabled", "true");
         $("input[name='wpcf-pppa']").prop("disabled", "true"); 
         $("input[name='wpcf-ptl']").prop("disabled", "true");
         $("input[name='wpcf-ptpte']").prop("disabled", "true");
         $("input[name='wpcf-ptpti']").prop("disabled", "true"); 
         $("input[name='wpcf-ptc']").prop("disabled", "true"); 
         $("input[name='wpcf-psnl']").prop("disabled", "true");   
         $("input[name='wpcf-pcc']").prop("disabled", "true"); 

        } else {
         $("input[name='wpcf-pnps']").removeProp("disabled");
         $("input[name='wpcf-pspitlp']").removeProp("disabled");
         $("input[name='wpcf-ppp']").removeProp("disabled");
         $("input[name='wpcf-pto']").removeProp("disabled"); 
         $("input[name='wpcf-pto2']").removeProp("disabled");
         $("input[name='wpcf-pppa']").removeProp("disabled"); 
         $("input[name='wpcf-ptl']").removeProp("disabled");
         $("input[name='wpcf-ptpte']").removeProp("disabled");
         $("input[name='wpcf-ptpti']").removeProp("disabled"); 
         $("input[name='wpcf-ptc']").removeProp("disabled"); 
         $("input[name='wpcf-psnl']").removeProp("disabled");   
         $("input[name='wpcf-pcc']").removeProp("disabled"); 

        }
    }).change();

    $("input[name='wpcf-pspitlp']").change(function() {
        if(this.checked) {
         $("input[name='wpcf-pde']").prop("disabled", "true"); 
         $("input[name='wpcf-pnps']").prop("disabled", "true");       
         $("input[name='wpcf-ppp']").prop("disabled", "true");
         $("input[name='wpcf-pto']").prop("disabled", "true"); 
         $("input[name='wpcf-pto2']").prop("disabled", "true");
         $("input[name='wpcf-pppa']").prop("disabled", "true"); 
         $("input[name='wpcf-ptl']").prop("disabled", "true");
         $("input[name='wpcf-ptpte']").prop("disabled", "true");
         $("input[name='wpcf-ptpti']").prop("disabled", "true"); 
         $("input[name='wpcf-ptc']").prop("disabled", "true"); 
         $("input[name='wpcf-psnl']").prop("disabled", "true");   
         $("input[name='wpcf-pcc']").prop("disabled", "true"); 

        } else {
         $("input[name='wpcf-pde']").removeProp("disabled");
         $("input[name='wpcf-pnps']").removeProp("disabled");
         $("input[name='wpcf-pspitlp']").removeProp("disabled");
         $("input[name='wpcf-ppp']").removeProp("disabled");
         $("input[name='wpcf-pto']").removeProp("disabled"); 
         $("input[name='wpcf-pto2']").removeProp("disabled");
         $("input[name='wpcf-pppa']").removeProp("disabled"); 
         $("input[name='wpcf-ptl']").removeProp("disabled");
         $("input[name='wpcf-ptpte']").removeProp("disabled");
         $("input[name='wpcf-ptpti']").removeProp("disabled"); 
         $("input[name='wpcf-ptc']").removeProp("disabled"); 
         $("input[name='wpcf-psnl']").removeProp("disabled");   
         $("input[name='wpcf-pcc']").removeProp("disabled"); 



        }
    }).change();
});

HTML

<body>
    <div class="cred-field cred-field-pcb">
        <div class="cred-label">Pesquisas cadastradas</div>
            <input name="wpcf-pcb" id="pcb_Pesquisas_cadastradas" value="Pesquisas cadastradas" class="myzebra-prime-name-wpcf-pcb" type="checkbox"  >
        </div>
        <div class="cred-field cred-field-pde">
            <div class="cred-label">Pesquisas descontinuadas</div>
            <input name="wpcf-pde" id="pde_Pesquisas_descontinuadas" value="Pesquisas descontinuadas" class="myzebra-prime-name-wpcf-pde" type="checkbox" checked >
        </div>
        <div class="cred-field cred-field-pnps">
            <div class="cred-label">Pesquisas não patenteáveis/sigilosas</div>
            <input name="wpcf-pnps" id="pnps_Pesquisas_não_patenteáveis-sigilosas" value="Pesquisas não patenteáveis-sigilosas" class="myzebra-prime-name-wpcf-pnps" type="checkbox">
        </div>
        <div class="cred-field cred-field-pspitlp">
            <div class="cred-label">Pesquisas sem potencial de inovação tecnológica, liberadas para publicação</div>
            <input name="wpcf-pspitlp" id="pspitlp_Pesquisas_sem_potencial_de_inovação_tecnológica,_liberadas_para_publicação" value="Pesquisas sem potencial de inovação tecnológica, liberadas para publicação" class="myzebra-prime-name-wpcf-pspitlp" type="checkbox">
        </div>
        <div class="cred-field cred-field-ppp">
            <div class="cred-label">Pesquisas com pedido de patente</div>
            <input name="wpcf-ppp" id="ppp_Pesquisas_com_pedido_de_patente" value="Pesquisas com pedido de patente" class="myzebra-prime-name-wpcf-ppp" type="checkbox">
        </div>
        <div class="cred-field cred-field-pto">
            <div class="cred-label">Pesquisas com tecnologia em oferta</div>
            <input name="wpcf-pto" id="pto_Pesquisas_com_tecnologia_em_oferta" value="Pesquisas com tecnologia em oferta" class="myzebra-prime-name-wpcf-pto" type="checkbox">
        </div>
        <div class="cred-field cred-field-pto2">
            <div class="cred-label">Pesquisa com tecnologia em oferta pela 2ª vez</div>
            <input name="wpcf-pto2" id="pto2_Pesquisa_com_tecnologia_em_oferta_pela_2ª_vez" value="Pesquisa com tecnologia em oferta pela 2ª vez" class="myzebra-prime-name-wpcf-pto2" type="checkbox">
        </div>
        <div class="cred-field cred-field-pppa">
            <div class="cred-label">Pesquisas com pedido de patente abandonado</div>
            <input name="wpcf-pppa" id="pppa_Pesquisas_com_pedido_de_patente_abandonado" value="Pesquisas com pedido de patente abandonado" class="myzebra-prime-name-wpcf-pppa" type="checkbox">
        </div>
        <div class="cred-field cred-field-ptl">
            <div class="cred-label">Pesquisas com tecnologia licenciada</div>
            <input name="wpcf-ptl" id="ptl_Pesquisas_com_tecnologia_licenciada" value="Pesquisas com tecnologia licenciada" class="myzebra-prime-name-wpcf-ptl" type="checkbox">
        </div>
        <div class="cred-field cred-field-ptpte">
            <div class="cred-label">Pesquisas com titularidade de patente transferida para empresa</div>
            <input name="wpcf-ptpte" id="ptpte_Pesquisas_com_titularidade_de_patente_transferida_para_empresa" value="Pesquisas com titularidade de patente transferida para empresa" class="myzebra-prime-name-wpcf-ptpte" type="checkbox">
        </div>
        <div class="cred-field cred-field-ptpti">
            <div class="cred-label">Pesquisas com titularidade de patente transferida para inventor</div>
            <input name="wpcf-ptpti" id="ptpti_Pesquisas_com_titularidade_de_patente_transferida_para_inventor" value="Pesquisas com titularidade de patente transferida para inventor" class="myzebra-prime-name-wpcf-ptpti" type="checkbox">
        </div>
        <div class="cred-field cred-field-ptc">
            <div class="cred-label">Pesquisas com tecnologia cedida</div>
            <input name="wpcf-ptc" id="ptc_Pesquisas_com_tecnologia_cedida" value="Pesquisas com tecnologia cedida" class="myzebra-prime-name-wpcf-ptc" type="checkbox">
        </div>
        <div class="cred-field cred-field-psnl">
            <div class="cred-label">Pesquisas com segredo de negócio licenciado</div>
            <input name="wpcf-psnl" id="psnl_Pesquisas_com_segredo_de_negócio_licenciado" value="Pesquisas com segredo de negócio licenciado" class="myzebra-prime-name-wpcf-psnl" type="checkbox">
        </div>
        <div class="cred-field cred-field-pcc">
            <div class="cred-label">Pesquisas com contrato cancelado</div>
            <input name="wpcf-pcc" id="pcc_Pesquisas_com_contrato_cancelado" value="Pesquisas com contrato cancelado" class="myzebra-prime-name-wpcf-pcc" type="checkbox">
        </div>
        <div class="cred-field cred-field-pe">
            <div class="cred-label">Processos encerrados</div>
            <input name="wpcf-pe" id="pe_Processos_encerrados" value="Processos encerrados" class="myzebra-prime-name-wpcf-pe" type="checkbox">
    </div>

谢谢!

2 个答案:

答案 0 :(得分:2)

部分问题在于您最初不应触发pspitlp逻辑。另外,你使用的是prop而不是attr。此外,所有这些逻辑都可以简化:

$(document).ready(function(){

    $("input[name='wpcf-pde']").change(function() {

         $("input[name^='wpcf']").not("[name=wpcf-pcb],[name=wpcf-pde]").attr("disabled", $(this).is(':checked'));

    }).change();

    $("input[name='wpcf-pspitlp']").change(function() {

         $("input[name^='wpcf']").not("[name=wpcf-pcb],[name=wpcf-pspitlp]").attr("disabled", $(this).is(':checked'));

    });

});

答案 1 :(得分:0)

如果要禁用(或取消选中)除当前选中的所有复选框,则可以使用此算法:

$(document).ready(function () {
    var inputs = $("div.cred-field input[name^=wpcf]").filter(function () {
        return !(this.name == 'wpcf-pcb' || this.name == 'wpcf-pe'); //skip these two
    });
    inputs.change(function () {
        var c = this.checked;
        inputs.each(function () {
            this.checked = false; // to clear all other checkboxes
            this.disabled = c; // to disable or enable all other checkboxes
        });
        this.checked = c;
        this.disabled = false;
    });
});

http://jsfiddle.net/JJ8Jc/91/