Как получить текстовое поле asp.net 3.5 для ввода в JavaScript? - PullRequest
0 голосов
/ 18 сентября 2010

Глядя на многие форумы, кажется, что это решение, но оно мне не подходит:

 function update() {

     alert("hello world");

     var test = document.getElementById("<%=InCL.ClientID%>").value;    

     alert(test);

 } 

и asp / html:

<asp:TextBox ID="InCL" runat="server" Text="" value="" onchange="update()"></asp:TextBox>  

Кажется, мне не хватает чего-то простого?Я также пытался использовать одинарные кавычки с <% = InCL.ClientID%>

При изменении всплывающее окно с предупреждением "Привет мир", но не для проверки ...

Использование asp.net3.5, FF, главные страницы и т.д ...

Спасибо.

РЕДАКТИРОВАТЬ
Итак, я изменил его, чтобы использовать this.value, и это работает, но все еще нет решения, как получить его по id?

работает:

<asp:TextBox ID="InCL" runat="server" Text="" value="1" onchange="update(this.value)"></asp:TextBox>  

с:

function update(x) {

     alert(x);


 }  

Ответы [ 3 ]

3 голосов
/ 18 сентября 2010

Причина, по которой это не работает, заключается в том, что JavaScript находится во внешнем js-файле, который не проходит конвейер обработки и подается статически с диска.Серверный тег <% = InCL.ClientID%> должен пройти через конвейер обработки для вывода строки идентификатора серверного элемента управления.

Самый простой способ решить эту проблему - поместить элемент сценария встр.Другими способами являются определение только того JavaScript, который имеет серверные теги на странице, и присваивает его глобальной переменной.Затем определите ваш внешний скрипт после объявления и назначения глобальной переменной - затем вы можете использовать эту переменную во внешнем файле скрипта.

1 голос
/ 18 сентября 2010

Почему бы просто не передать "this", а не "this.value"? (Очевидно, без кавычек в реальном коде.) Если вы передадите фактический объект поля, вы можете получить идентификатор, значение, любых родителей, бабушек и дедушек или братьев и сестер, висящих вокруг старого соседства DOM - и вы получите многоразовый кусок кода, который может быть вставлен в любое место без необходимости жесткого кодирования значения идентификатора. (Даже если код используется только в этой форме, что произойдет, если вы решите пересмотреть форму?)

1 голос
/ 18 сентября 2010

Ваша проблема в том, что ваш файл JavaScript является внешним, поэтому он не имеет никакой видимости или смысла для связи между текущей страницей HTML и сервером.

Это, вероятно, ваша лучшая ставка

Объявите буквальный элемент управления на странице:

<asp:Literal id="variables" runat="server" />

Установите идентификатор клиента:

variables.Text = string.Format("var myclientid='{0}';", Incl.ClientID);

Затем вы можете получить к нему доступ из внешнего файла JS:

document.getElementById(myclientid);

НТН

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...