Name:
Email :
Phone Number:
0,true,false)}\">
---------- public class AutoCompleteController { public list conList {get;set;} public  AutoCompleteController(){ conList = new list(); Contact c = new Contact(); conList.add(c); } public void addContact() { Contact c = new Contact(); conList.add(c); } public void removeContact(){ Integer indexVal = Integer.valueof(system.currentpagereference().getparameters().get('index')); conList.remove(indexVal - 1); } }", "answerCount": 2, "upvoteCount": 0, "datePublished": "2018-05-25T15:59:06.000Z", "author": { "@type": "Person", "name": "Kiran Atmakuru", "url": "https://trailblazers.salesforce.com/profileView?u=0053A00000EeXmKQAV", "affiliation": { "@type": "Organization", "name": "USM Business Systems Inc" } }, "acceptedAnswer": { "@type": "Answer", "text": "
Name:
Email :
Phone Number:
0,true,false)}\">
 ", "upvoteCount": 0, "url": "https://trailhead.salesforce.com/trailblazer-community/feed/0D54V00007T4HUaSAN", "datePublished": "2018-05-26T22:33:01.000Z", "author": { "@type": "Person", "name": "Kiran Atmakuru", "url": "https://trailblazers.salesforce.com/profileView?u=0053A00000EeXmKQAV", "affiliation": { "@type": "Organization", "name": "USM Business Systems Inc" } } }, "suggestedAnswer": [] } } Skip to main content
Autocomplete feature is working great but when there are two Contact blocks and when I try to search for contact then it updates both Contact blocks.How do I make sure it updates only the block that I searched on.

AutoComplete in Visualforce Page

  

    <apex:page Controller="AutoCompleteController" sidebar="false" showHeader="false">

        

        <link rel="stylesheet" href="//ajax.googleapis.com/ajax/libs/jqueryui/1.11.1/themes/smoothness/jquery-ui.css" />

        <script src="//ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>

        <script src="//ajax.googleapis.com/ajax/libs/jqueryui/1.11.1/jquery-ui.min.js"></script>

        <apex:remoteObjects >

          <apex:remoteObjectModel name="Contact" fields="Id,Name,Email,Phone"/>

        </apex:remoteObjects>

        

        

          <script>

           function autocompleteonfocus(){

            var selectedId = null;

              

               $('input[id$=conName],input[id$=conEmail],input[id$=conPhone]').autocomplete({ 

                minLength: 2,

                delay: 500,

                source: function( request, response ) {

                    var ContactRO = new SObjectModel.Contact();

                    ContactRO.retrieve({where: {Name: {like: request.term + "%" }}}, function(err, records, event) {

                        if (err) {

                            alert(err);

                        } else {

                            var result = [];

                            records.forEach(function(record) {

                               result.push( { 

                                   label: record.get("Name"),

                                   value: record.get("Id"),

                                   Name : record.get("Name"),

                                   Email: record.get("Email"),

                                   Phone: record.get("Phone"),

                               });

                            });

                            response(result);

                        }

                    });

                },

                select: function(event, ui) {        

                    event.preventDefault();

                

                     $('input[id$=conEmail]').val(ui.item.Email);

                     $('input[id$=conName]').val(ui.item.Name);

                     $('input[id$=conPhone]').val(ui.item.Phone); 

                    selectedId = ui.item.value;

                },

                

           

            });

            

            }

            

           

        </script> 

        

            <apex:form >

                  <div style="margin-left: 5%; margin-right: 5%;margin-top: 5%;"> 

                     <apex:outputPanel id="cPanel">

                       <apex:variable value="{!0}" var="cnt" />

                       <apex:repeat value="{!conList}" var="con" id="conRepeatId">

                                   Name:

                                    <apex:inputText value="{!con.Name}" id="conName"  onfocus="autocompleteonfocus();"/>

                                   <br/>

                                   Email :

                                    <apex:inputText value="{!con.Email}"  id="conEmail"  onfocus="autocompleteonfocus();" />

                                   <br/>

                                     Phone Number:

                                     <apex:inputText value="{!con.Phone}" id="conPhone"  onfocus="autocompleteonfocus();"/>

                                    <br/>

                            <apex:outputPanel rendered="{!IF(cnt>0,true,false)}">

                                    <apex:commandButton value="Remove" action="{!removeContact}" immediate="true" rerender="cPanel">

                                        <apex:param name="index" value="{!cnt}" />

                                    </apex:commandButton> <br/>

                            </apex:outputPanel> 

                         <apex:variable var="cnt" value="{!cnt+1}" />

                       </apex:repeat>

                      </apex:outputPanel> 

                       <apex:commandButton value="Add Contact" action="{!addContact}"  rerender="cPanel" /> 

                    </div>

                </apex:form>

        </apex:page>

----------

    public class AutoCompleteController {

     public list<Contact> conList {get;set;}  

    

       public  AutoCompleteController(){

              conList = new list<Contact>();

            Contact c = new Contact();

            conList.add(c);

       }

       

        public void addContact() { 

            Contact c = new Contact();

            conList.add(c);

        }

       

        public void removeContact(){

            Integer indexVal = Integer.valueof(system.currentpagereference().getparameters().get('index'));

            conList.remove(indexVal - 1);   

        }

        

    }
2 risposte
  1. 26 mag 2018, 22:33

    <apex:page Controller="AutoCompleteController" sidebar="false" showHeader="false">

    <link rel="stylesheet" href="//ajax.googleapis.com/ajax/libs/jqueryui/1.11.1/themes/smoothness/jquery-ui.css" />

    <script src="//ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>

    <script src="//ajax.googleapis.com/ajax/libs/jqueryui/1.11.1/jquery-ui.min.js"></script>

    <apex:remoteObjects >

    <apex:remoteObjectModel name="Contact" fields="Id,Name,Email,Phone"/>

    </apex:remoteObjects>

    <script>

    function autocompleteonfocus(row){

    var selectedId = null;

    $('input[id$=conName],input[id$=conEmail],input[id$=conPhone]').autocomplete({

    minLength: 2,

    delay: 500,

    source: function( request, response ) {

    var ContactRO = new SObjectModel.Contact();

    ContactRO.retrieve({where: {Name: {like: request.term + "%" }}}, function(err, records, event) {

    if (err) {

    alert(err);

    } else {

    var result = [];

    records.forEach(function(record) {

    result.push( {

    label: record.get("Name"),

    value: record.get("Id"),

    Name : record.get("Name"),

    Email: record.get("Email"),

    Phone: record.get("Phone"),

    });

    });

    response(result);

    }

    });

    },

    select: function(event, ui) {

    event.preventDefault();

    $(".conEmail"+row).val(ui.item.Email);

    $(".conName"+row).val(ui.item.Name);

    $(".conPhone"+row).val(ui.item.Phone);

    selectedId = ui.item.value;

    },

    });

    }

    </script>

    <apex:form >

    <div style="margin-left: 5%; margin-right: 5%;margin-top: 5%;">

    <apex:outputPanel id="cPanel">

    <apex:variable value="{!1}" var="rowNum"/>

    <apex:variable value="{!0}" var="cnt" />

    <apex:repeat value="{!conList}" var="con" id="conRepeatId">

    Name:

    <apex:inputText value="{!con.Name}" id="conName" onfocus="autocompleteonfocus('{!rowNum}');" styleClass="conName{!rowNum}"/>

    <br/>

    Email :

    <apex:inputText value="{!con.Email}" id="conEmail" onfocus="autocompleteonfocus('{!rowNum}');" styleClass="conEmail{!rowNum}"/>

    <br/>

    Phone Number:

    <apex:inputText value="{!con.Phone}" id="conPhone" onfocus="autocompleteonfocus('{!rowNum}');" styleClass="conPhone{!rowNum}"/>

    <br/>

    <apex:outputPanel rendered="{!IF(cnt>0,true,false)}">

    <apex:commandButton value="Remove" action="{!removeContact}" immediate="true" rerender="cPanel">

    <apex:param name="index" value="{!cnt}" />

    </apex:commandButton> <br/>

    </apex:outputPanel>

    <apex:variable var="rowNum" value="{!rowNum + 1}"/>

    <apex:variable var="cnt" value="{!cnt+1}" />

    </apex:repeat>

    </apex:outputPanel>

    <apex:commandButton value="Add Contact" action="{!addContact}" rerender="cPanel" />

    </div>

    </apex:form>

    </apex:page>

     
0/9000