2014-01-21 3 views
1

Я использую RegularExpressionValidator для проверки текстового поля.Как назначить текст для метки в javascript?

Теперь, если текстовое поле действительно, мне нужно отобразить сообщение «Страница является допустимым» в Label Control.

Я делаю это в коде За мной или я объявляю метку в самом javascript?

В JavaScript я попытался с помощью:

document.getElementById("LabelId").innerText="Your Text Here" 

но он показывает Microsoft JScript ошибка выполнения:

Unable to set value of the property 'innerText': object is null or undefined".

Кроме того, я попытался с помощью innerHTML вместо этого, но он показывает подобную ошибку , Итак, каков правильный способ присвоить значение метке? Edited: Ниже мое ASPX кодирование:

<%@ Page Title="" Language="C#" MasterPageFile="~/Site.Master" AutoEventWireup="true"   
CodeBehind="RegularExpressionValidator.aspx.cs" Inherits="ValidationTask.WebForm3" %> 
<asp:Content ID="Content1" ContentPlaceHolderID="HeadContent" runat="server"> 
</asp:Content> 
<asp:Content ID="Content2" ContentPlaceHolderID="MainContent" runat="server"> 
<asp:Label ID="LabelText" runat="server" Text="Label"></asp:Label><br /> 
<script type="text/javascript" language="javascript"> 
    function ValidatePage() { 
     debugger; 
     if (Page_IsValid) { 
      document.getElementById('<%= LabelText.ClientID %>').innerHTML = 'Page Is Valid'; 
     } 
     else { 
      document.getElementById('<%= LabelText.ClientID %>').innerHTML = 'Page is Invalid'; 
     } 
    } 
</script> 
<asp:Label ID="LabelZip" runat="server" Text="Enter Zip Code"></asp:Label> 
<asp:TextBox ID="TextBox1" runat="server"></asp:TextBox><br /> 
<asp:Button ID="Button1" runat="server" Text="Enter" OnClientClick="return ValidatePage()" /> 

<asp:RegularExpressionValidator ID="RegularExpressionValidator1" ControlToValidate="TextBox1" 
ValidationExpression="\d{5}" runat="server" ErrorMessage="The zip code must be 5 numeric 
digits"></asp:RegularExpressionValidator> 
</asp:Content> 

Заранее спасибо.

P.S. Я здесь новый, и это мой первый вопрос. Пожалуйста, проигнорируйте, допустили ли я какие-либо ошибки.

+0

Попробуйте добавить свой код на загрузку или готовность документа. Объект undefined или null возникает, когда элемент не найден в dom. обратитесь к http://stackoverflow.com/questions/4488714/change-label-text-using-javascript –

+0

попробуйте использовать идентификатор клиента для метки .... например '" <% = LabelId.clientID%> "или использовать проверку element –

+0

Можете ли вы проверить элемент и убедиться, что у вас есть правильный идентификатор? –

ответ

2

Генерация идентификаторов клиента

Открыть источник вашей страницы в браузере. Это даст вам хорошее представление о том, как генерируется идентификатор клиента. Каждый идентификатор элемента должен быть уникальным, и с использованием мастер-страниц и элементов управления вам и платформе .NET будет очень сложно создавать такие результаты. Если вы используете мастер-страницы со держателями содержимого, вы заметите, что ваши идентификаторы элементов создаются на основе имен держателей содержимого, в которых они находятся.

Здесь хорошо Code Project article относительно генерации идентификаторов клиентов.

Validation

В вашем случае, используя RegularExpressionValidator сгорит страницы валидатор при нажатии кнопки и если действительный, в результате чего на странице их размещения на сервер. Вероятно, лучше всего добавить код в Code Behind. В таких случаях что-то вроде @SachinScriptManager.RegisterStartupScript должно работать в обработчике событий кнопки.

Предполагая, что у вас есть только одно поле: вы можете преобразовать валидатор в CustomFieldValidator и запустить регулярное выражение с помощью javascript. Если значение верное, вы можете установить текст ярлыка в javascript, не делая никаких обратных передач, однако вы можете потерять состояние метки после того, как страница будет отправлена ​​назад.

Edit: JQuery

Oftentimes я ссылаться на свои элементы, используя jQuery selectors, потому что я не хочу возиться с генерируемым идентификатором клиента. Вы можете получить свои элементы, используя Ends With Selector следующим образом:

var name = $('input[id$="txtName"]'); // Find an element that ends with "txtName". 

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

3
document.getElementById("LabelId").innerText="Your Text Here" 

Похоже, что ваш элемент не найден на странице. Дважды проверьте идентификатор, чтобы убедиться, что он существует. Самый простой способ - просто посмотреть в html, чтобы убедиться, что вы используете правильный идентификатор. Одна вещь, о которой следует помнить при определении меток asp.Net в качестве элементов управления на стороне сервера, заключается в том, что идентификатор стороны клиента представляет собой конкатенацию указанного идентификатора и идентификаторов предков метки. Это означает, что вы не можете ссылаться на идентификатор стороны сервера непосредственно в JavaScript, поскольку это только часть полного идентификатора стороны клиента. Возможно, вам придется указать его с помощью wild card.

Если вам нужно использовать джокер может быть проще сделать это в Jquery

$('[id*=LabelId]') 

Это означает, что вы должны добавить ссылку на скрипт JQuery, хотя.

+0

Спасибо за быстрый ответ. Я пробовал это, но показывает эту ошибку. «Ошибка выполнения Microsoft JScript: значение свойства« $ »имеет значение null или undefined, а не объект Function» – Khan

+0

Он сказал: «Это означает, что вам нужно добавить ссылку на скрипт для JQuery «Похоже, что вы не сделали – sh1rts

+0

Да, извините, я не указал, что вам нужно добавить JQuery для этого решения. Однако я бы удостоверился, что элемент находится на странице по этому идентификатору. Если вы добавите метку asp.net на стороне сервера, идентификатор клиентской стороны будет конкатенацией указанного id и идентификаторов его предков. Убедитесь, что сначала – TGH

1

В веб-формах ASP.Net существует свойство ClientID для каждого элемента управления на сервере. Это сгенерированный идентификатор, который можно использовать на стороне клиента. Поэтому для установки метки на стороне клиента для метки с < asp: label runat = "server" id = "label1"/>, одним из способов, который вы можете сделать, является получение clientId в клиентской переменной с использованием серверной части RegisterStartupScript -

//server side code 
page_load(){ 
ScriptManager.RegisterStartupScript("IDs", string.format("var labelId = '{0}';", label1.ClientID); 
} 

//in javascript 
document.getElementById(labelId).innerHTML = 'whatever'; 

Кстати, у меня есть только такой код, чтобы он не работал так, как есть.

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