2013-07-17 188 views
0

在Javascript中,我遇到了邏輯上的問題。第二個功能取消了上述功能。我要做什麼來解決?邏輯錯誤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> 

謝謝!

+0

小提琴會有幫助 – turnt

+0

你是什麼意思的「取消」?請更清楚地描述所需的行爲和實際行爲。請注意,這兩個函數都不需要大的if/else結構,您可以說'.prop(「disabled」,this.checked);'爲每個項目而不是嘗試使用'.prop(「disabled」,「true」); '和'.removeProp(「禁用」)'。如果你可以找到一種方法來一次選擇所有相關的項目(例如,通過給它們一個普通的類),你可以用$(「input.someClass」)將每個函數減少到一行。prop(「disabled」 ,this.checked);'。 – nnnnnn

+0

'$(「input [name | ='wpcf']」)'會成爲你的朋友。 – moonwave99

回答

2

問題的一部分是,你最初不應該觸發pspitlp邏輯。此外,你正在使用道具而不是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')); 

    }); 

}); 
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/