Как сбросить webcontrol.textbox.text, когда он потерял фокус?

У меня есть страница asp, и у меня есть текстовые поля фильтра наверху. Эти 3 текстовых поля отображаются с текстом (говорящим, что вводить). У меня уже есть код для выделения всего текста, когда текстовое поле получает фокус, но теперь мне нужно в некотором смысле сделать прямо противоположное, когда элемент управления теряет фокус. Цель здесь - сделать так, чтобы фильтры текстового поля всегда заполнялись текстом по умолчанию, за исключением случаев, когда пользователь ввел допустимое значение фильтра.

В принципе

если control.text = string.empty и control.lostfocus, тогда вернуть текст в конец по умолчанию, если

Пока у меня есть этот код при загрузке страницы...

    Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
    If Not IsPostBack Then
        txtAcctFilter.Attributes.Add("onFocus", "JavaScript:this.select();")
        txtMonthFilter.Attributes.Add("onFocus", "JavaScript:this.select();")
        txtYearFilter.Attributes.Add("onFocus", "JavaScript:this.select();")
        'txtAcctFilter.Attributes.Add("onBlur", )
        'txtMonthFilter.Attributes.Add("onBlur", txtMonthFilter.Text = "Enter Month")
        'txtYearFilter.Attributes.Add("onBlur", txtYearFilter.Text = "Enter Year")
        Populate()
    End If
End Sub

Закомментированные 3 строки являются моими попытками, но я считаю, что это проблема между свойствами, возвращаемыми в элементе управления. Я новичок в javascript, поэтому не уверен, что именно там происходит. Любые идеи о том, как я могу заставить эту простую логику работать?

2 ответа

Решение

Это было бы что-то вроде этого:

txtMonthFilter.Attributes.Add("onBlur", "javascript: if (this.value == """") {this.value = ""Enter Month""}")
you can use jquery:

$('input[id$="txtMonthFilter"]').blur( function () {
   if ($(this).val() == '') $(this).val('Enter Month');
});
Другие вопросы по тегам