У меня есть кнопка с изображением asp, которую нужно нажать с помощью функции javascript.Нажатие на текстовое поле должно запускать это событие на стороне сервера кнопок изображений при нажатии клавиши ввода.Код выглядит следующим образом: -
Разметка
<asp:ImageButton ID="ImageButton3" runat="server" ImageUrl="images/butt_searchoff.png"
class="sb_search" ToolTip="Search the Database" AlternateText="Search" OnClick="ImageButton3_Click" OnClientClick="SetExpandedCount()"/>
<input id="tbSearch" runat="server" class="sb_input" type="text" autocomplete="off" onkeypress="return OverridePostBackOnEnter(event, '" & ImageButton3.ClientID & "');" />
Я хочу передать ImageButton3 ClientId в качестве параметра функции Javascript с именем OverridePostBackOnEnter
Javascript выглядит следующим образом:
function OverridePostBackOnEnter(event, ctrl) {
if (event.keyCode == 13) {
alert(ctrl);
if ($.browser.mozilla) {
__doPostBack(ctrl, 'OnClick'); //for IE
}
else {
//but for other browsers you should use
__doPostBack(ctrl, 'OnClick');
}
}
};
То, что я нахожу, это: а) я не могу получить правильный ClientId для передачи, я просто получаю либо неопределенное, либо нулевое значение.
и б) если я хард-код и изменитьctrl для 'cmain_ctl00_ImageButton3' __dopostback не вызывает мой серверный код для ImageButton3.
Любая помощь по этому вопросу будет высоко оценена.
Редактировать
Хорошо, думаю, я нашел решение для этого и подумал, что мне следует обновить сообщение, если оно кому-нибудь понадобится.
Сначала я установил «ClientIdMode» на ImageButton3 в «Static»
<asp:ImageButton ID="ImageButton3" ClientIDMode="Static" runat="server" ImageUrl="images/butt_searchoff.png" class="sb_search" ToolTip="Search the Database" AlternateText="Search" OnClick="ImageButton3_Click" OnClientClick="SetExpandedCount()"/>
это позволяет мне передавать идентификатор кнопки в функцию 'OverridePostBackOnEnter'
<input id="tbSearch" runat="server" class="sb_input" type="text" autocomplete="off" onkeypress="return OverridePostBackOnEnter(event, 'ImageButton3');" />
Тогда мой javascript становится:
function OverridePostBackOnEnter(event, ctrl) {
if (event.keyCode == 13) {
if ($.browser.mozilla) {
var overridctrl = document.getElementById(ctrl);
__doPostBack(overridctrl.name, ''); //for IE
}
else {
//but for other browsers you should use
var overridctrl = document.getElementById(ctrl);
__doPostBack(overridectrl.name, '');
}
}
};
При просмотре yourForm._EVENTTARGET.value' а также 'yourForm. EVENTARGUMENT.value' я мог видеть, что эти значения не были установлены.Используя 'document.getelementId' и передавая 'control.name', вы устанавливаете эти значения и разрешаете '1033 * _dopostpack' вызывать событие на стороне сервера.
Спасибо всем за то, что нашли время для своего дняпомоги мне, высоко ценится.