2009-07-09 5 views
0

Я пытаюсь эмулировать простой пользовательский элемент управления timepick с помощью комбинированного блока и небольшого изображения часов. В пользовательском элементе управления I типа в коде:Несколько элементов управления пользователя с Javascript

function SetFocus() { 
    var comboBox = $find("<%=cboTime.ClientID %>"); 
    var input = comboBox.get_inputDomElement(); 
    input.focus();  } 

cboTime является контроль выпадающий и есть образ немного часов сразу после я связать событие щелчка изображения этой функции

все хорошо и денди, если у меня есть ОДИН пользовательский контроль на моей странице .....

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

Я знаю, ЧТО происходит ... Мне просто нужно обходное решение. Когда страница отображается, она создает два идентичных сценария с идентификатором клиента в поле со списком. Проблема в том, что все предыдущие экземпляры перезаписывают предшественника, поскольку они имеют одно и то же имя.

У кого-нибудь есть решение? Это должно быть просто, но я не могу найти ответ нигде.

Благодаря

ответ

1

Вам нужно будет изменить метод SetFocus() так, что он принимает идентификатор клиента из выпадающего списка в качестве параметра:

function SetFocus(cboClientId) { 
    var comboBox = $find(cboClientId); 
    var input = comboBox.get_inputDomElement(); 
    input.focus(); 
} 

Это означает, что вы должны изменить код, в котором вызывается метод SetFocus(). Если я правильно понимаю, это делается в обработчике событий клика на клиенте на изображении. В этом случае вы можете установить часть изображения onclick="..." в коде элемента управления. Например. что-то вроде этого (не проверено):

ASCX:

<asp:DropDownList id="cboTime" .../> 
<asp:Image id="img" .../> 

Code-за:

img.Attributes.Add("onclick", 
    string.Format("javascript:SetFocus('{0}');", cboTime.ClientID)); 

Тогда вы можете взять метод SetFocus() и поместить его во внешний файл JS (и включают в себя что в вашем ASCX).

Смежные вопросы