Почему JQueryUI не работает со стандартными элементами ввода salesforce? - PullRequest
2 голосов
/ 10 октября 2011

У меня проблемы с использованием JQueryUI со стандартными элементами salesforce. По сути, я хочу автоматически предлагать пользователю имена записей вместо того, чтобы пользователь нажимал на кнопку поиска 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. В моем случае события JQueryUI не запускаются для элементов salesforce.

Ответы [ 2 ]

2 голосов
/ 10 октября 2011

{!$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;
    }
}

Надеюсь, что поможет,Matt

0 голосов
/ 29 октября 2011

Я выяснил причину, по которой JQeuryUI не работал со стандартным элементом ввода SalesForce. Я пытался использовать автозаполнение JQueryUI на элемент ввода. Функция действия, которая должна была быть вызвана, не была вызвана, потому что у меня не было

<apex:actionFunction immediate="true" />

То есть у нас должен быть установлен атрибут немедленного = истинного, чтобы функция действия вызывалась немедленно. Если у нас не установлен этот атрибут, SalesForce попытается проверить все стандартные элементы ввода, и если проверка не удалась, функция действия никогда не вызывается.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...