Ошибка JavaScript: невозможно прочитать свойство 'txtAlias' из неопределенного http://localhost/Test.aspx - PullRequest
1 голос
/ 11 июня 2011

Я недавно обновил свое приложение C # ASP.Net 4.0 с Windows 2003 IIS 6 до Windows 2008 IIS 7, и некоторые из моих Javascript не отвечают, который работает с Windows 2003 и IIS6. В приведенном ниже простом примере я получаю следующую ошибку Javascript:

"TypeError: Невозможно прочитать свойство 'txtAlias' из неопределенного [http://localhost:61003/Sabbat/Test.aspx:10]

Логика проста. Когда вы вводите Имя и Фамилию, в поле Псевдоним должно отображаться Имя и Фамилия.

Кстати, я использую Интегрированный режим в IIS 7, и я проверил на двух машинах с Win 2008 и IIS 7 и получаю ту же ошибку. Он отлично работает на моем сервере Win 2003 и IIS 6. Я понятия не имею, что вызывает это, и я уже потратил 5 часов на это, пытаясь найти решение. Если кто-то может помочь, это спасет меня от моих волос:)

Кстати, web.config, который я использую, по умолчанию используется для создания веб-приложения. Спасибо впереди !!!

<%@ Page Title="Home Page" Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">

<head id="Head1" runat="server">
    <title></title>
    <script type="text/javascript">
    function onFocusAlias() {
        document.Form1.txtAlias.value = document.Form1.txtFirstName.value + " " + document.Form1.txtLastName.value;
    }   
    </script>
</head>
<body>
    <form id="form1" runat="server">
    <div>
    <table>
    <tr>
    <td>
        First Name <asp:TextBox ID="txtFirstName" Runat="server" MaxLength="50" /></td>
    <td>
    Last Name <asp:TextBox ID="txtLastName" Runat="server" MaxLength="50" /></td>
    <td>
    Alias <asp:TextBox ID="txtAlias" Runat="server" MaxLength="100" Width="208px" onfocus="onFocusAlias();" />
    </td>
    </tr>
    </table>
    </div>
    </form>
</body>
</html>

Ответы [ 4 ]

1 голос
/ 11 июня 2011

Версия сервера не должна влиять на JavaScript (поскольку все это обрабатывается в браузере на клиенте), но если в движке .NET произошли изменения, я полагаю, что он может отображать в браузере другой HTML. *

Первое, что я заметил, это то, что атрибут id тега form имеет значение «form1», а JavaScript ссылается на «Form1». Другой случай может быть виновником. Это, безусловно, стоит сопоставить только для согласованности и устранения этого как потенциальной ошибки.

Кроме того, и здесь мой JavaScript немного размыт, когда вы ссылаетесь на document.Form1 в JavaScript, он идентифицирует элемент по его атрибуту id или по его атрибуту name? Я честно не уверен. Но если это последнее, то возможно, что движок .NET не добавляет атрибут name туда, где он это делал ранее.

В конечном счете, как выглядит визуализированный HTML? Потому что именно здесь резина встречается с JavaScript, а не на уровне сервера.

0 голосов
/ 11 июня 2011

JavaScript чувствителен к регистру.Вы ссылаетесь на document.Form1, но элемент формы имеет идентификатор form1.В разметке, которую вы показали, document.Form1 не определено.

0 голосов
/ 11 июня 2011

Смена id на name подойдет, но еще лучше, используйте jQuery и сделайте следующее:

function onFocusAlias()
{
    $('#txtAlias').val($('#txtFirstName').val() + " " + $('#txtLastName').val();
}

Вот не-jQuery-версия без изменения разметки:

function onFocusAlias()
{
    document.getElementById('txtAlias').value = document.getElementById('txtFirstName').value + " " + document.getElementById('txtLastName').value;
}
0 голосов
/ 11 июня 2011

Вы можете попробовать что-то в форме:

document.getElementById('txtAlias').value = 123;

просто как тест.

...