通常我们会有需求:在搜索框中输入关键词,点击后面搜索,相关数据会显示在输入框的下面供选择,如下图

First I am assuming that you already have Static Resource of named “AutoCompleteWithModal“. This Static resource has all images, CSS and JQuery library needed to implement this component.

使用JQueryUI 自动完成组件

Visualforce Account_JSON :

<apex:page Controller="AccountJSONCreator" contentType="application/x-JavaScript; charset=utf-8" showHeader="false" standardStylesheets="false" sidebar="false">
{!JSON}
</apex:page>

  Controller AccountJSONCreator :

public with sharing class AccountJSONCreator {

    public String getJSON()
{
String AccountName = Apexpages.currentPage().getParameters().get('AccName');
List<AccountWrapper> wrp = new List<AccountWrapper>();
for (Account a : [Select a.Id, a.Website, a.Name, a.BillingCountry, a.BillingCity
From
Account a
WHERE Name Like : '%'+AccountName+'%' ]) {
AccountWrapper w = new AccountWrapper (a.Name, nullToBlank (a.BillingCountry), nullToBlank (a.BillingCity));
wrp.add(w);
}
return JSON.serialize(wrp);
} public String nullToBlank(String val)
{
return val == null ?'':val;
} public class AccountWrapper
{
String AccName,BillingCountry,BillingCity; public AccountWrapper(String aName, String bCountry, String bCity)
{
AccName = aName;
BillingCountry = bCountry;
BillingCity = bCity;
}
} static testMethod void AccountJSONCreatorTest() {
AccountJSONCreator obj = new AccountJSONCreator();
obj.getJSON();
}
}

  Now let’s create a Component which will make AJAX request to above visualforce page “Account_JSON” and Parse JSON page using JQuery.

Component Autocomplete_Component :

<apex:component>
<apex:attribute name="ComponentLabel" description="Label of Component"
type="String" required="true"/> <apex:stylesheet value="{!URLFOR($Resource.AutoCompleteWithModal, '/JQueryUI/css/ui-lightness/jquery-ui-1.8.17.custom.css')}"/>
<apex:includeScript value="{!URLFOR($Resource.AutoCompleteWithModal, '/JQueryUI/js/jquery-1.7.1.min.js')}"/>
<apex:includeScript value="{!URLFOR($Resource.AutoCompleteWithModal, '/JQueryUI/js/jquery-ui-1.8.17.custom.min.js')}"/>
<apex:stylesheet value="{!URLFOR($Resource.AutoCompleteWithModal, '/JQueryModal/css/basic.css')}"/> <style type="text/css">
.ui-autocomplete-loading { background: white url('{!URLFOR($Resource.AutoCompleteWithModal, 'AjaxLoad.gif')}') right center no-repeat; }
</style> {!ComponentLabel} <apex:inputText id="theTextInput"/> <script type="text/javascript">
//$ac - AutoComplete $ac = jQuery.noConflict(); function getLoadingImage()
{
var loadImagURL = "{!URLFOR($Resource.AutoCompleteWithModal, 'BigLoad.gif')}";
var retStr = ['<img src="', loadImagURL ,'" title="loading..." alt="loading..." class="middleAlign" />'];
return retStr.join("");
} var sourcePage = 'https://c.ap1.visual.force.com/apex/Account_JSON?core.apexpages.devmode.url=0'; $ac(function() {
var txtVal = $ac('[id="{!$Component.theTextInput}"]');
//This method returns the last character of String
function extractLast(term) {
return term.substr(term.length - 1);
} $ac('[id="{!$Component.theTextInput}"]').autocomplete({
source: function( request, response ) { //Abort Ajax
var $this = $ac(this);
var $element = $ac(this.element);
var jqXHR = $element.data('jqXHR');
if(jqXHR)
jqXHR.abort(); $ac('[id="{!$Component.theTextInput}"]').addClass('ui-autocomplete-loading');
//prompt('',sourcePage+'&key='+txtVal.val());
$element.data('jqXHR',$ac.ajax({
url: sourcePage+'&AccName='+txtVal.val(),
dataType: "json",
data: {
},
success: function( data ) {
response( $ac.map( data , function( item ) {
return {
label: '<a>'+
item.AccName+"<br />"+
'<span style="font-size:0.8em;font-style:italic">'
+item.BillingCity+', '+item.BillingCountry+
"</span></a>",
value: item.AccName
}
}));
},
complete: function() { //This method is called either request completed or not
$this.removeData('jqXHR'); //remove the class responsible for loading image
$ac('[id="{!$Component.theTextInput}"]').removeClass('ui-autocomplete-loading');
}
})
); },
search: function() {
/*
// If last character is space
var term = extractLast(this.value);
if(term == " ")
{
return true;
}
*/ //If String contains at least 1 space
if (this.value.indexOf(" ") >= 0)
{
$ac('[id="{!$Component.theTextInput}"]').autocomplete('option', 'delay', 500);
return true;
}
return false;
},
focus: function() {
// prevent value inserted on focus
return false;
},
select: function(event, ui) {
var selectedObj = ui.item;
//alert(selectedObj.compId);
//getCompanyDetail(selectedObj.compId);
return true;
}
}).data("autocomplete")._renderItem = autoCompleteRender; }); function autoCompleteRender(ul, item) {
return $ac("<li></li>").data("item.autocomplete", item).append(item.label).appendTo(ul);
} </script>
</apex:component>

  

Viusalforce Page : AutoCompleteDemo

<apex:page >
<apex:form >
<c:autocomplete_component ComponentLabel="Enter Account Name : "/>
</apex:form>
</apex:page>

  

 
 

071_salesforce 页面自动检索匹配显示设置的更多相关文章

  1. 2017春 前端自动化(二) 页面自动刷新、sass与css转换的使用、pxToRem直观转换

    2017春 前端自动化(二)   页面自动刷新.sass与css转换的使用.pxToRem直观转换 引言:   此文要演示:浏览器页面自动刷新:移动端px与rem的转换,简单直观化:使用sass自动生 ...

  2. Go 实现 自动检索 API 错误码代码行 并 打印成文档,例 markDown 形式等

    作者:林冠宏 / 指尖下的幽灵 掘金:https://juejin.im/user/587f0dfe128fe100570ce2d8 博客:http://www.cnblogs.com/linguan ...

  3. EasyUI 1.3.2 中 Combobox自动检索 键盘上下选择Bug问题

    EasyUI 自带的Combobox控件,提供了下拉列值自动检索功能. 在用到的EasyUI 1.3.2版本中还是有点问题,在键盘上下键移动选择过程中只能定位在第一个,不能正常向下移动 问题解决方式: ...

  4. 【前台页面 BUG】回车按钮后,页面自动跳转

    点击回车按钮后,页面自动的迅速跳转 原因: 表单隐式提交了. 解决方法: 在方法执行完成后,加上return false; 代码如下: /** * 注册按钮的点击事件 */ $("#regi ...

  5. PHP 页面自动刷新可借助JS来实现,简单示例如下:

    <?php  echo "系统当前时间戳为:"; echo ""; echo time(); //<!--JS 页面自动刷新 --> echo ...

  6. 详解Grunt插件之LiveReload实现页面自动刷新(两种方案)

    http://www.jb51.net/article/70415.htm    含Grunt系列教程 这篇文章主要通过两种方案详解Grunt插件之LiveReload实现页面自动刷新,需要的朋友可以 ...

  7. 方法总结:如何实现html页面自动刷新

    使用场景: 1. 页面需要定时刷新,实时加载数据,需要实时查看监控数据(H5中的WebSocket和SSE可以实现局部刷新) 2. 一定时间之后跳转到指定页面(登录注册之类) 3. 前端开发使用伪数据 ...

  8. springboot 学习之路 7(静态页面自动生效问题)

    目录:[持续更新.....] spring 部分常用注解 spring boot 学习之路1(简单入门) spring boot 学习之路2(注解介绍) spring boot 学习之路3( 集成my ...

  9. HTML 页面自动刷新

    学习就是一个不断积累的过程,每一天能够学到一点新东西说明自己就在进步!! HTML head 里面设置页面自动刷新功能 <meta http-equiv="Refresh" ...

  10. 实现html页面自动刷新的几种方式

    自动页面刷新通常会用在对数据的实时性比较敏感的网站中,比如股票走势等,另外在普通的页面自动跳转中也会使用到页面自动刷新技术. 页面刷新我见过的有三种方式,下面来一一说明 1.通过在<head&g ...

随机推荐

  1. py教学之字典

    字典简介 字典是另一种可变容器模型,且可存储任意类型对象. 字典的每个键值 key=>value 对用冒号 : 分割,每个对之间用逗号(,)分割,整个字典包括在花括号 {} 中 ,格式如下所示: ...

  2. 动力节点—day05

    数组 Java语言当中的数组是一种引用数据类型,不属于基本数据类型,数组的父类是Object 数组实际上是一个容器,可以同时容纳多个元素(数组是一个数据集合),多个数据元素的类型必须是一致的 数组当中 ...

  3. java 进阶P-3.7

    HASH表 Java 集合框架 HashMap 是一个散列表,它存储的内容是键值对(key-value)映射. HashMap 实现了 Map 接口,根据键的 HashCode 值存储数据,具有很快的 ...

  4. 11月18日内容总结——同步、异步与阻塞、非阻塞的概念、创建进程的多种方式及multiprocessing模块、进程间的数据隔离和IPC机制(队列)、生产者消费者模型、守护进程、僵尸进程、孤儿进程和多进程错乱问题

    目录 一.同步与异步 同步 异步 二.阻塞与非阻塞 阻塞 非阻塞 三.综合使用 1.同步阻塞: 2.同步非阻塞: 3.异步阻塞: 4.异步非阻塞: 四.创建进程的多种方式 进程的创建 multipro ...

  5. 2023.1.13 [网络流24题] 餐巾计划问题 LuoguP1251

    2023.1.13 今日完成的[餐巾计划问题],是一道最小费用最大流的模板题,本人太弱在第一次使用dinic + spfa 完成此题时,也出现了许多问题,在此总结和提醒. 大致题意 一个餐厅在相继的 ...

  6. Java最全八股文(2023最新整理)

    本文已经收录到Github仓库,该仓库包含计算机基础.Java基础.多线程.JVM.数据库.Redis.Spring.Mybatis.SpringMVC.SpringBoot.分布式.微服务.设计模式 ...

  7. Cannot find module ‘xxx\node_modules\yorkie\bin\install.js‘

    1.出现问题原因 安装一个新仓库代码的依赖包,如输入npm install或yarn install,出现如题错误 2.解决办法 1)升级node.js 下载地址:https://nodejs.org ...

  8. STM32F1库函数初始化系列:DMA—ADC采集

    1 void ADC_Configure(void) 2 { 3 ADC_InitTypeDef ADC_InitStructure; 4 GPIO_InitTypeDef GPIO_InitStru ...

  9. ubuntu16.04安装官方cartographer

    工作空间名为catkin_cart 1.安装步骤: https://google-cartographer-ros.readthedocs.io/en/latest/compilation.html ...

  10. 注释、input()、运算符、组织结构(顺序、选择、循环)

    注释 单行注释 # 多行注释 将三对引号之间的为多行注释 ''' ''' 中文编码的声明注释 #coding:gbk input()函数 接受来自用户的输入 返回值是str 值的存储 使用=对输入的值 ...