У меня есть функция поиска в многопользовательском режиме на веб-пользовательском контроллере, который вызывается внутри ретранслятора, OHMY !!Автозаполнение jQuery на пользовательском контроллере в Repeater .NET.
У меня есть несколько учебных занятий, которые перечислены на странице, каждый из которых вызывает пользовательский пользовательский пользовательский контролер, чтобы люди могли искать сотрудников для добавления в учебную сессию. У меня есть идентификаторы сотрудников и идентификаторы сотрудников, перечисленные в JS на странице, и с использованием автозаполнения jQuery у меня есть поиск сотрудника и заполнение скрытого поля в пользовательском контроллере. Как только процесс будет выполнен, у них есть возможность добавить еще одного сотрудника.
Таким образом, у меня была работа Autocompelte во всех окнах поиска сотрудников, но я делаю автозаполнение начального поиска (обратной передачи), не будет работать снова.
Тогда я обновляемые $(). Готовы (функция() в Pageload(), так что корректно работает на нескольких запросов, но только в последнем пункте повторителя (Jquery загружается на контроллер пользователя)
FYI : Я строка JS установить в качестве EMPLOYEENAME | ID и JQuery отображает имя сотрудника и если они выбирают его бросает идентификатор в ASP: Скрытое поле
<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 в User Controll i переопределить предыдущую страницуLoad.
ВОПРОС: Есть ли способ обойти это, чтобы все jQuery отображались в одной странице Load или каким-то образом имели один вызов jquery для обработки всех моих полей поиска?
Я не могу переместить Jquery на страницу, призывающую все контроллеры, потому что у меня нет никакого способа ссылки на конкретное tb_EmployeeName текстового поля и hf_EmployeeID скрытого поля.
Огромное спасибо за любую помощь или прозрение, которые вы можете дать мне в этой проблеме.
Это Multiview, что на контроллере пользователя
<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" /> <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>
------------ UPDATE -------------
Благодаря 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]);
});
});
};
Я ничего в Multiview не изменится за оборачивать два входа в DIV с классом 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!
Вы правы, обратная связь с jQuery. Заглянув в нее, я нашел информацию об использовании pageLoad() (см. Выше код), который отлично работал, когда у меня был только один экземпляр searchBox на странице. – TheDPQ
Кажется, что вы получаете доступ к элементу формы по идентификатору, если каждый экземпляр окна поиска имеет тот же идентификатор, что и JavaScript, потому что идентификатор должен быть уникальным. Что делать, если вы измените код так, чтобы он получал поле ввода классом, что позволит использовать несколько полей автозаполнения. , например. '$ (". autocomplete "). autocomplete (EmployeeList' – Nalum
Я изначально просто использовал cssclass, когда я впервые тестировал это. Однако есть недостатки, пытающиеся разделить строки имен и предполагая, где их первое/последнее имя останавливается и запускается Первые имена, такие как «Мэри Энн» или фамилии, такие как «Dela Cruz», означают, что все это произошло. Итак, я обновил его со скрытым полем, не требуя при этом лишнего поиска, чтобы получить идентификатор. ASP: HIDDEN FIELD не поддерживает атрибут cssclass, поэтому у меня нет способа заполнения скрытого поля EmployeeID после того, как они выбрали сотрудника из автозаполнения. – TheDPQ