2016-10-07 92 views
0

我的控制器:要启用和禁用jquery中复选框条件的按钮?

public class AccountEditController { 

    public String closePopup { get; set; } 

    accountwrapper1 makeEdit; 
    List<accountwrapper1> listAccount = new List<accountwrapper1>(); 
    List<Account> selectableAccount = new List<Account>(); 
    //set<Account> selectableAccount2 = new set<Account>(); 
    //public Boolean showPanel {get; set;} 
    public Boolean showPopup { get; set; } 

    public AccountEditController() { 
      showPopup = False; 
     //showPanel = False; 
    } 

    public List<accountwrapper1> getAccounts() { 
     if(listAccount == Null){ 
      for(Account a: [SELECT Id, Name, BillingCountry, Phone FROM Account]) 
      listAccount.add(new accountwrapper1(a)); 
      return listAccount; } 
     else{ 
      listAccount.clear(); 
      for(Account a: [SELECT Id, Name, BillingCountry, Phone FROM Account]) 
      listAccount.add(new accountwrapper1(a)); 
      return listAccount;    
      }   
    } 

    public PageReference showToPopup() { 
    // public PageReference showToPanel() { 
     showPopUp = True; 
     return Null; 
     //showPanel = True; 
     } 

    public PageReference getSelectable() { 
     system.debug('Hello'); 
     selectableAccount.clear(); 
     for(accountwrapper1 accwrapper : listAccount) 
     if(accwrapper.selected == True) 
     selectableAccount.add(accwrapper.acc); 
     system.debug(selectableAccount); 
     return Null;    
    } 

    public string BillingCountry { 
     get; 
     set; 
    } 


    /*public PageReference Savemeth() { 
     for(account acc :selectableAccount) { 
       acc.BillingCountry = BillingCountry; 
       selectableAccount2.add(acc); 

     }  
    update selectableAccount2; 
    showPopup = False; 
    return Null; 

    }*/ 

    public PageReference Savemeth() 
    { 
     map<Id, Account> mapAccountForUpdate = new map<Id, Account>(); 
     for(account acc :selectableAccount) 
     { 
      system.debug('BillingCountry: '+BillingCountry); 
      acc.BillingCountry = BillingCountry; 
      mapAccountForUpdate.put(acc.Id, acc); 
     }  
     update mapAccountForUpdate.values(); 
     selectableAccount = new List<Account>(); 
     showPopup = Null; 
     BillingCountry = ''; 
     //showPopup = False; 
     return null; 
    } 

    public PageReference cancelmeth() {   
     return Null; 
    } 

    public PageReference closePopup() { 
     showPopup = Null; 
     BillingCountry = ''; 
     //showPopup = False; 
     return Null; 
    } 

    public PageReference GetSelectedAccounts() 
    { 
     if(selectableAccount.size()>0) { 
     system.debug(selectableAccount.size()); 
     system.debug(selectableAccount); 
     showPopup = Null; 
     return Null; 
     } 
     else 
     showPopup = Null; 
     return Null; 
    } 


    public class accountwrapper1 
    {    
     public Account acc{get; set;}  
     public Boolean selected {get; set;} 
     public accountwrapper1(Account a) 
     { 
      acc = a; 
      selected = False; 
     } 
    } 
} 

下面的代码是为提供账户名单在account.by的帐单国家领域的更新方式选择到的复选框值为“确实“,即适当的帐户将被更新。在帐单国家/地区字段中的模型弹出框的输入需要更新的值。

我的页面:

<apex:page controller="AccountEditController" applyHtmlTag="true"> 
<head> 
    <apex:includeScript value="https://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js" /> 
</head> 
<script> 
    $(document).ready(function(){  
     select();   
    }); 

    function select(){ 
     $('[id*=chkb1]').change(function(){ 

      $("[id*='chkb2']").attr("checked",this.checked); 
      getSelectable(); 

     }); 

     $('[id*=chkb2]').click(function(){ 

      if($('[id*=chkb2]').length== $("[id*='chkb2']: checked").length) 
      {   
       $("[id*='chkb1']").attr("checked",this.checked); 
       getSelectable();  

      } 
      else 
      {  
       var checkboxes = document.getElementsByTagName('input'); 
       var counter = 0; 
       var counter1 = 1; 

       for (var i = 0; i < checkboxes.length; i++) { 
        if (checkboxes[i].type == 'checkbox') { 
         counter++; 
         if(checkboxes[i].checked == true){ 
          counter1++; 
         } 
        } 
       }   
       if(counter==counter1){ 
        $("[id*='chkb1']").attr("checked",this.checked); 
        getSelectable(); 
       } else { 
         $("[id*='chkb1']").removeAttr("checked"); 
         getSelectable(); 
        }     
      }   
     }); 
    } 

</script> 
    <style type="text/css"> 
    .PopupBackground{ 
     background-color: white; 
     opacity: 0.8; 
     filter: alpha(opacity = 20); 
     position: absolute; 
     width: 100%; 
     height: 200%; 
     top: -100px; 
     left: 10px; 
     z-index: 9998; 
    } 
    .AccountEdit{ 
     background-color: white; 
     border-width: 8px; 
     border-style: solid; 
     z-index: 9999; 
     left: 30%; 
     padding:10px; 
     position: absolute; 
     width: 350px; 
     margin-left: 75px; 
     top:300px; 
    } 
    </style> 
     <apex:form > 
      <apex:actionFunction name="getSelectable" action="{!getSelectable}" reRender="Output"/> 
      <apex:pageBlock Title="List of Accounts" > 

        <apex:pageBlockButtons location="top"> 
         <apex:commandButton value="Get selected Records" action="{!showToPopup}" rerender="Output" id="button"/> 
         <apex:commandButton value="Cancel" action="{!closePopup}" rendered="output"/> 
         <!-- <apex:commandButton value="Get selected Records" action="{!showToPanel}" rerender="Output" id="button"/>----> 

        </apex:pageBlockButtons> 

       <!-- {!showPanel}----> 
         <apex:outputPanel id="Output"> 
          <apex:outputPanel styleClass="PopupBackground" layout="black" rendered="{!showPopup}"> 
           <apex:outputPanel styleClass="AccountEdit" layout="black" rendered="{!showPopup}"> 
         <!--- <apex:outputPanel rendered="{!showPanel}">-----> 
          <!---{!showPanel}----------> 
           <apex:outputLabel value="BillingCountry: "></apex:outputLabel> 
           <apex:inputText id="BillingCountry" value="{!BillingCountry}" size="40" style="height:13px;font-size:11px;"/><br />     
           <center><apex:commandButton value="Save" action="{!Savemeth}" reRender="Initialtable,Output" oncomplete="select();"/> 
           <!-- <apex:commandButton value="cancel" action="{!cancelmeth}"/>----> 
           <apex:commandButton value="Cancel" action="{!closePopup}"/></center> 
           </apex:outputPanel> 
          </apex:outputPanel>     
         </apex:outputPanel> 
       <!-- <apex:commandButton value="cancelPopup" action="{!closePopup}"/>---> 
        <apex:pageBlockSection Title="List of Available Accounts" columns="1" collapsible="true"> 
          <apex:pageblockTable value="{!accounts}" var="a" id="Initialtable"> 

           <apex:column > 
            <apex:facet name="header"> 
             <apex:inputCheckbox value="{!a.selected}" id="chkb1"> 
              <!-- <apex:actionSupport event="onclick" action="{!getSelectable}" reRender="Output"/> --> 
             </apex:inputCheckbox> 
            </apex:facet> 
            <apex:inputCheckbox value="{!a.selected}" id="chkb2" /> 
            <!-- <apex:actionSupport event="onclick" action="{!getSelectable}" reRender="Output"/> --> 
           </apex:column> 

           <apex:column headervalue="Account Name" value="{!a.acc.Name}" width="200"/> 
           <apex:column headervalue="Phone" value="{!a.acc.Phone}" width="300"/> 
           <apex:column headervalue="Billing Country" value="{!a.acc.BillingCountry}" width="300"/> 

          </apex:pageblocktable> 
        </apex:pageBlockSection> 

      </apex:pageblock> 
     </apex:form> 
</apex:page> 

所以这里的我的网页我想在这里的“获取选定的记录”按钮,在那里,所以它在至少应一个复选框的条件应使将被(注意:请将jquery中的执行流程作为你写的,以帮助我清楚地理解我的观点) 所以请提前帮助我完成此功能的答案。

+0

哇,多数民众赞成了大量的代码! – deeveeABC

+0

确实,我能否也建议Op,你创建了一个小的可重复的测试用例。堆栈溢出片段将是理想的!你的问题非常具体,但你的例子不是。你的问题也是特定于jQuery的,所以你的例子不需要所有的visualforce代码。这样做你有更好的机会得到答案。 – Keith

回答

0

如果我明白你的目的,你可以得到一个变量用于计数复选框被选中。

$(document).ready(function() { 
 
    $('.btn').prop('disabled', true); 
 

 
}); 
 
var chbchecked = 0; 
 
$('.chb').change(function() { 
 
    if (this.checked) { 
 
    chbchecked++; 
 
    $('.btn').prop('disabled', false); 
 
    } else { 
 
    chbchecked--; 
 
    if (chbchecked == 0) { 
 
     $('.btn').prop('disabled', true); 
 
    } 
 
    } 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script> 
 
<input type="checkbox" class="chb" value="1" /><a>chb1</a> 
 
<input type="checkbox" class="chb" value="2" /><a>chb2</a> 
 
<input type="checkbox" class="chb" value="3" /><a>chb3</a> 
 
<button type="submit" class="btn"> 
 
    Save 
 
</button>

+0

谢谢barzin !!!你给我一个想法... – MohanRaj

相关问题