2010-03-05 3 views
15

У меня есть текстовое поле, значения которого мне нужно проверить (если значение текстового поля равно 50, а затем выводить сообщение в lblShowMsg), когда пользователь выходит из текстового поля (событие onBlur). Я не могу получить синтаксис правильно.ASP.NET textbox onblur event

У меня есть этот код в моем случае Pageload:

protected void Page_Load(object sender, EventArgs e) 
{ 
    txtCategory.Attributes.Add("onblur", "validate()"); 

} 

Но я не могу показаться, чтобы получить код Javascript правильно. Какие-либо предложения?

+2

почему вы добавив атрибут ONBLUR на лету, а не в разметке? – awright18

ответ

9

в код: (VB.NET)

На мероприятии загрузки страницы

txtAccountNumber.Attributes["onBlur"] = "IsAccNumberValid(" & txtAccountNumber.ClientID & ")"; 

Где txtAccountNumber это идентификатор TextBox на странице разметки и вы передаете ClientID текстового поля, поскольку JavaScript является стороне клиента не на стороне сервера. А теперь на странице разметки (.aspx), имеют этот JavaScript в головной части страницы:

<script type="text/javascript">      
function IsAccNumberValid(txtAccountNumber) {            
    if (txtAccountNumber.value.length < 6) {  
         alert(txtAccountNumber.value); 
      }  
     }  
</script> 
+3

Вот версия C#: ddlCompanies.Attributes ["onBlur"] = "AddNewCompany1 (" + ddlCompanies.ClientID + ")"; –

5

Это фактический код в вашей Page_Load? Вам нужно использовать имя элемента управления, а не имя типа для TextBox. Например, вы можете попробовать:

textBox1.Attributes.Add("onblur", "validate();"); 

где «textBox1» это идентификатор, назначенное TextBox в разметке вместо этого.

Кроме того, из Javascript очень возможно, что идентификатор текстового поля изменился после его отображения на странице. Было бы лучше, если бы вы передать управление функции валидации:

function validate(_this) 
{ 
    if (_this.value == "50") 
     // then set the ID of the label. 
} 

Тогда вы бы установить атрибут вроде этого:

textBox1.Attributes.Add("onblur", "validate(this);"); 

Наконец, я настоятельно рекомендую использовать библиотеку JQuery, если вы «что-то делаю в Javascript. Это упростит вашу жизнь в 10 раз.

+0

К сожалению, это была опечатка с моей стороны. Идентификатор txtBox является txtCategory – LearningCSharp

+0

Когда я запускаю код, как вы показываете его выше (без JQuery), появляется сообщение об ошибке «Ошибка выполнения JScript для Microsoft JScript: document.form1.lblShowMsg 'является нулевым или не является объектом " – LearningCSharp

+0

Опять же, часть проблемы состоит в том, что ярлык, который вы хотите использовать, более чем вероятно переименован в нечто другое. Используйте что-то вроде инструментов разработчика в IE или FireBug в Firefox, чтобы выследить _actual_ ID метки в форме. Оба этих инструмента позволят вам проскочить через DOM. Когда вы его найдете, используйте document.getElementById («id of element here») для извлечения элемента, а затем вы можете установить его innerHTML свойство в Javascript –

2

Это работает.

Textbox1.Attributes.Add ("onblur", "javascript: alert ('aaa');");

Убедитесь, что functiion находится в части скрипта на странице.


Моя страница

<script type="text/javascript"> 
    function Validate() { 

     alert('validate'); 

    } 

    </script> 
</head> 
<body> 
    <form id="form1" runat="server"> 
    <div> 
     <asp:TextBox ID="Textbox1" runat="server"></asp:TextBox> 
     <asp:Button ID="Button1" runat="server" Text="Button" /> 
    </div> 
    </form> 
</body> 
</html> 

код за

public partial class _Default : System.Web.UI.Page 
    { 
     protected void Page_Load(object sender, EventArgs e) 
     { 
      Textbox1.Attributes.Add("onblur","Validate();"); 
     } 
    } 
+0

Не требуется оповещение; Необходимо отобразить сообщение в метке; (lblShowMsg.visible = true) – LearningCSharp

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