Добавить в код OnFocus без удаления текущего OnFocus - PullRequest
1 голос
/ 17 октября 2011

Я разрабатываю страницу ASP.NET с c # на сервере.

У меня есть некоторый javascript для отслеживания того, где был последний фокус перед обратной передачей, и установки его после обратной передачи. Однако, если поле получения фокуса является полем пароля, мне нужно очистить ввод, когда элемент управления получает фокус.

Я добавил это так:

protected void Page_Load(object sender, EventArgs e)
{
    if (TextBox.Text.Trim().Length > 0)
    {
    TextBox.Attributes.Add("onfocus", "this.value=''");
    }
}

но теперь он переопределяет мой JavaScript, поэтому, когда я нажимаю на следующее текстовое поле, фокус теряется.

Можно ли каким-либо образом добавлять строки после друг друга? Как это:

<asp:TextBox ID="TextBoxPassword" runat="server" TextMode="password" onfocus="try{document.getElementById(&#39;__LASTFOCUS&#39;).value=this.id} catch(e) {} + this.value=''" ></asp:TextBox>

Я знаю, что это невозможно сделать с помощью +, но есть ли способ сделать это?

Ответы [ 3 ]

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

Вы должны создать функцию JavaScript для обработки применения фокуса:

applyFocus = function(ctrl, clearOnFocus) {
    if (clearOnFocus){
        ctrl.value = "";
    }
    ctrl.focus();
}

И вы можете реализовать это так:

<asp:TextBox Id="txtPassword" runat="server" TextMode="Password" onfocus="applyFocus(this, true);" ...>
0 голосов
/ 18 октября 2011

Работал, вызывая его по идентификатору моего текстового поля, сгенерированному asp.net.

if(document.getElementById('REQUEST_LASTFOCUS') == document.getElementById('MainContent_TextBoxAdgangskode')) 
                    {
                        document.getElementById('MainContent_TextBoxAdgangskode').value = '';
                    }

Я не знаю, является ли это "хорошей практикой" для непосредственного вызова идентификатора, но яне мог заставить другого работать.

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

вместо этого, делая это (что всегда очищает значение, когда элемент управления имеет фокус), вы не можете очистить его от кода, как показано ниже

protected void Page_Load(object sender, EventArgs e)
{
    if (TextBox.Text.Trim().Length > 0)
    {
      TextBox.Text = String.Empty;
    }
}
...