我在使用带有salesforce标准元素的JQueryUI时遇到问题。基本上,我想自动向用户建议记录名称,而不是用户点击salesforce搜索按钮。
<apex:inputField value="{!MyRecord.ChildRecord__c}" id="inpId" required="true/>
<script>
jq$(document.getElementById('{!$Component.inpId}')).autocomplete( {
minLength: 2,
autoFocus: true,
source: mySource
});
</script>
因此,我想知道是否有人试图将JQueryUI与标准salesforce输入元素一起使用。在我的例子中,没有为salesforce元素触发JQueryUI事件。
答案 0 :(得分:2)
{!$Component.[elementid]}
并不总是对我有用;我不知道为什么。我更喜欢使用带有选择器的属性末尾(http://api.jquery.com/attribute-ends-with-selector/)。
尝试这样的事情:
<apex:includeScript value="/soap/ajax/18.0/connection.js" />
<apex:includeScript value="/soap/ajax/18.0/apex.js" />
<script>
var j$ = jQuery.noConflict();
j$(document).ready(function(){init();});
function init()
{
var mySourceText = "ActionScript AppleScript Asp BASIC C "
+ "C++ Clojure COBOL ColdFusion Erlang Fortran Groovy "
+ "Haskell Java JavaScript Lisp Perl PHP Python Ruby "
+ "Scala Scheme";
var mySource = mySourceText.split(" ");
j$("[id$='myInput']").autocomplete({
minLength: 2,
autoFocus: true,
source: function(request, response){
response(GetSourceAjaxAPI(request.term)); }
});
}
function GetSourceAjaxAPI(s)
{
var result = sforce.apex.execute("TestAutocomplete",
"GetAutocompleteValuesAjaxAPI", {SearchTerm:s});
return result;
}
</script>
<apex:form >
<apex:pageblock >
<apex:pageblocksection >
<apex:pageblocksectionitem >
<apex:inputfield id="myInput" value="{!Contact.FirstName}" />
</apex:pageblocksectionitem>
</apex:pageblocksection>
</apex:pageblock>
</apex:form>
控制器:
global class TestAutocomplete
{
global TestAutocomplete(ApexPages.StandardController myStandardController) {}
webservice static List<String>
GetAutocompleteValuesAjaxAPI(String SearchTerm)
{
String mySourceText = 'ActionScript AppleScript Asp BASIC C '
+ 'C++ Clojure COBOL ColdFusion Erlang Fortran Groovy '
+ 'Haskell Java JavaScript Lisp Perl PHP Python Ruby '
+ 'Scala Scheme';
List<String> mySourceList = mySourceText.split(' ');
List<String> myReturnList = new List<String>();
for(String s : mySourceList)
{
if(s.contains(SearchTerm)){ myReturnList.add(s); }
}
return myReturnList;
}
}
希望有所帮助,
马特
答案 1 :(得分:0)
我弄清楚了JQeuryUI没有使用SalesForce标准输入元素的原因。我试图在输入元素上使用JQueryUI自动完成。应该调用的动作函数没有被调用,因为我没有
<apex:actionFunction immediate="true" />
那就是我们必须设置immediate = true属性,以便立即调用action函数。如果我们没有设置此属性,SalesForce会尝试验证所有标准输入元素,如果验证失败,则永远不会调用action函数。