I am working on searching the contact by its first name. Is it Feasible to make a call to server from javascript every time when user presses a key ? Controller :
global class checkcontactduplicateandsave
{
public String contactName { get; set; }
public String contactEmail { get; set; }
public String contactPhone { get; set; }
public static Contact[] contact { get; set; }
public checkcontactduplicateandsave()
{//default constructor}
@RemoteAction
global static Contact[] getContact(String contactName ,String contactPhone,String contactEmail)
{
if((!(String.isBlank(contactName)))&&(!(String.isBlank(contactPhone)))&&(!(String.isBlank(contactEmail))))
{
contact=[select ID,Name,MobilePhone,Email from Contact where FirstName=: contactName OR MobilePhone=: contactPhone OR Email =: contactEmail];
}
return contact;
}}
VF
<script type="text/javascript">
function getcontactJS()
{
//get the values of input text and place into the variable.
var contactNameJS = document.getElementById('conName').value;
var contactEmailJS = document.getElementById('conEmail').value;
var contactPhoneJS = document.getElementById('conPhone').value;
checkcontactduplicateandsave.getContact(contactNameJS,contactPhoneJS,contactEmailJS,
function(result, event)
{
document.getElementById('resultant').innerHTML='';
if (event.status)
{
for(var i=0;i<result.length;i++)
{
var acc = result[i];
document.getElementById('resultant').innerHTML += acc.Id;
document.getElementById('resultant').innerHTML += acc.Name + '<br/>';
}
}
else if (event.type === 'exception')
{
document.getElementById("errors-js").innerHTML = event.message;
}
else
{
document.getElementById("errors-js").innerHTML = 'No Records Found..';
}
}, {escape:true});
}
</script>
<table>
<tr>
<td>Contact Name :</td>
<td><input id="conName" type="text" onkeyup="getcontactJS();" /></td>
</tr>
<tr>
<td>Contact Phone No :</td>
<td><input id="conPhone" type="text" onkeyup="getcontactJS();" /></td>
</tr>
<tr>
<td>Contact Email :</td>
<td><input id="conEmail" type="text" onkeyup="getcontactJS();" /></td>
</tr>
</table>
<div id="errors-js"></div>
<div id="resultant"></div>
Is it feasible to have a server call from javascript each time ? Please Suggest any alternative.