Автоматически заполните jQuery на Пользовательском Контроллере в Повторителе.NET

У меня есть функция поиска Мультипредставления на Контроллере Интернет-пользователя, который называют в Повторителе, OHMY!!

У меня есть некоторые сеансы обучения, перечисляемые на странице, каждый называющий employeeSearch Контроллер Интернет-пользователя, таким образом, люди могут искать сотрудников для добавления к сеансу обучения. У меня есть Имена Сотрудника и идентификаторы Сотрудника, перечисленные в JS на странице и использовании автоматического заполнения jQuery, я сделал, чтобы они искали сотрудника и заполнили скрытое поле в Пользовательском контроллере. После того как процесс сделан, у них есть опция добавления еще одного сотрудника.

Таким образом, я сделал, чтобы Autocompelte 'работал' во всех полях поиска сотрудника, но один я делаю начальный поиск (обратная передача), автоматическое заполнение не будет работать снова.

Затем я обновил $ () .ready (функция () к pageLoad (), таким образом, это работает правильно над несколькими поисками, но только в ПОСЛЕДНЕМ объекте повторителя (jQuery загружается на Пользовательском Контроллере),

К вашему сведению: у Меня есть строковый набор JS как EMPLOYEENAME|ID, и jQuery отображает Имя Сотрудника и если они выбирают его, бросает идентификатор в ПОЛЕ ASP:HIDDEN

    <script type="text/javascript">

    format_item = function(item, position, length) {
        var str = item.toString().split("|", 2);           
        return str[0];
    }

     function pageLoad() {    
        $("#<%=tb_EmployeeName.ClientID %>").autocomplete(EmployeeList, {
            minChars: 0,
            width: 500,
            matchContains: true,
            autoFill: false,
            scrollHeight: 300,
            scroll: true,
            formatItem: format_item,
            formatMatch: format_item,
            formatResult: format_item
        });
        $("#<%=tb_EmployeeName.ClientID %>").result(function(event, data, formatted) {                
            var str = data.toString().split("|", 2);
            $("#<%=hf_EmployeeID.ClientID %>").val(str[1]);
        });
    };       

    </script>

Я могу уже предположить, что путем повторения pageLoad в Пользователе Controll переопределяю предыдущий pageLoad.

ВОПРОС: существует ли путь вокруг этого, способ иметь весь jQuery появляются в единственном pageLoad или так или иначе иметь единственный вызов jQuery для обработки всех моих полей поиска?

Я не могу переместить jQuery в страницу, назвав все контроллеры, потому что у меня нет способа сослаться на определенное tb_EmployeeName текстовое поле И hf_EmployeeID скрытое поле.

Огромное спасибо за любую справку или понимание можно дать мне в эту проблему.

Это - Мультипредставление это на Пользовательском Контроллере

        <asp:MultiView ID="mv_EmployeeArea" runat="server" ActiveViewIndex="0">

        <asp:View ID="vw_Search" runat="server">                  
            <asp:Panel ID="eSearch" runat="server">
                <b>Signup Employee Search</b> (<i>Last Name, First Name</i>)<br />
                <asp:TextBox ID="tb_EmployeeName" class="EmployeeSearch" runat="server"></asp:TextBox> 
                <asp:HiddenField ID="hf_EmployeeID" runat="server" />

                <asp:Button ID="btn_Search" runat="server" Text="Search" />
            </asp:Panel>                     
        </asp:View>

        <asp:View ID="vw_Confirm" runat="server">
            <b>Signup Confirmation</b>
            <asp:FormView ID="fv_EmployeeInfo" runat="server">
                <ItemTemplate> 
                    <%#(Eval("LastName"))%>, <%#(Eval("FirstName"))%><br />
                </ItemTemplate>
            </asp:FormView>    
            <asp:Button ID="btn_Confirm" runat="server" Text="Signup this employee" />  &nbsp; <asp:Button ID="btn_Reset3" runat="server" Text="Reset" />   
        </asp:View>

        <asp:View ID="vw_ThankYou" runat="server">
            <b>Thank You</b><br />
            The employee has been signed up and an email confirmation has been sent out.<br /><br />
            <asp:Button ID="btn_Reset" runat="server" Text="Reset" />
        </asp:View>              

    </asp:MultiView> 

------------ОБНОВЛЕНИЕ-------------

Благодаря Nalum я смог решить проблему намного лучшим способом затем моя предыдущая (удаленная) попытка. Теперь у меня есть единственная функция, которая обрабатывает все экземпляры для поля поиска, не имея необходимость генерировать больше кода для каждого создаваемого поля поиска.

Следующий JavaScript называют на родительской странице, которая содержит повторитель.

format_item = function(item, position, length) {
    var str = item.toString().split("|", 2);
    return str[0];
}

function pageLoad() {
    $(".ea_Autocomplete").each(function(i, element) {

        var tb_EmployeeName = $(this).children('input[id*=tb_EmployeeName]:first')
        var hf_EmployeeID = $(this).children('input[id*=hf_EmployeeID]:first')

        tb_EmployeeName.autocomplete(EmployeeList, {
            minChars: 0,
            width: 500,
            matchContains: true,
            autoFill: false,
            scrollHeight: 300,
            scroll: true,
            formatItem: format_item,
            formatMatch: format_item,
            formatResult: format_item
        });

        tb_EmployeeName.result(function(event, data, formatted) {
            var str = data.toString().split("|", 2);
            hf_EmployeeID.val(str[1]);
        });


    });
};

Я ничего не изменил в Мультипредставлении вне обертывания двух исходных данных в отделении с классом ea_Autocomplete

  <asp:Panel ID="eSearch" runat="server">
                <b>Signup Employee Search</b> (<i>Last Name, First Name</i>)<br />
                <div class="ea_Autocomplete">
                    <asp:TextBox ID="tb_EmployeeName" class="EmployeeSearch" runat="server"></asp:TextBox> 
                    <asp:HiddenField ID="hf_EmployeeID" runat="server" />
                </div>                                                                                 

                <asp:Button ID="btn_Search" runat="server" Text="Search" />
   </asp:Panel>

Еще раз спасибо Nalum!

6
задан TheDPQ 2 April 2010 в 19:03
поделиться

1 ответ

Я здесь как бы догадываюсь, я действительно не знаю asp.net, поправьте меня, если я ошибаюсь.

Я предполагаю, что Multiview выполняет какие-то действия типа ajaxy на фоне asp.net, и в этом случае, когда ваша форма поиска перезагружается, jQuery.autocomplete не будет применяться к новой форме. .

Скорее всего, я совершенно не прав в том, что только что сказал.


Отредактируйте мой второй комментарий.

$('.autocomplete').each(function(i,element){
    $(element).autocomplete({...});
    $(element).result(function(event, data, formatted) { 
        // Now based on you're element id you can build up an id and work with that
        var id = element.id + '-extra-stuff';               
        var str = data.toString().split("|", 2);
        $('#' + id).val(str[1]);
    });
});
2
ответ дан 17 December 2019 в 20:31
поделиться
Другие вопросы по тегам:

Похожие вопросы: