2

セールスフォースの標準要素でJQueryUIを使用するのに問題があります。基本的に、ユーザーがセールスフォースの検索ボタンをクリックするのではなく、レコード名をユーザーに自動的に提案したいと思います。

<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を使用しようとしたかどうかを知りたいです。私の場合、JQueryUIイベントはsalesforce要素に対して発生していません。

4

2 に答える 2

2

{!$Component.[elementid]}いつもうまくいくとは限りません。理由はわかりません。Attribute Ends With Selector(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;
    }
}

お役に立てば幸い、
マット

于 2011-10-10T16:42:45.093 に答える
1

JQeuryUIがSalesForceの標準入力要素で機能していなかった理由を理解しました。input要素でJQueryUIオートコンプリートを使用しようとしていました。呼び出されるはずだったアクション関数は、私が持っていなかったために呼び出されませんでした

<apex:actionFunction immediate="true" />

つまり、アクション関数がすぐに呼び出されるように、immediate=true属性を設定する必要があります。この属性が設定されていない場合、SalesForceはすべての標準入力要素を検証しようとし、検証が失敗した場合、アクション関数は呼び出されません。

于 2011-10-29T17:29:56.450 に答える