Javascript错误:无法读取未定义的属性'txtAlias'http://localhost/Test.aspx

问题描述:

我最近将C#ASP.Net 4.0应用程序从Windows 2003 IIS 6升级到Windows 2008 IIS 7,并且我的一些Javascript没有回应,它适用于Windows 2003 & IIS6。在下面的简单的例子,我得到了以下JavaScript错误:Javascript错误:无法读取未定义的属性'txtAlias'http://localhost/Test.aspx

“类型错误:无法读取属性 'txtAlias' 未定义的[HTTP://本地主机:61003 /宴/ Test.aspx文件中:10]

的逻辑很简单当你填写名字和姓氏时,别名字段应该显示名字+姓氏

Fyi,我在IIS 7中使用集成模式,我用Win 2008和IIS 7在两台机器上测试并得到在我的Win 2003 & IIS 6服务器上工作正常,我不知道是什么原因造成的,我已经花了5个小时试图找到一个解决方案,如果有人可以帮忙,那会为我节省一些我的头发:)

顺便说一下,我使用的web.config是创建一个Web应用程序时生成的默认值。 谢谢你!

<%@ 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> 
+0

您是否试过document.getElementById('txtAlias')。value = 123; – 2011-06-11 00:22:48

服务器版本应该不会影响到JavaScript的(因为这一切都在浏览器处理在客户端),但如果有变化,则.NET引擎,我想这可能会呈现不同的HTML到浏览器。

我注意到的第一件事是form标记的id属性是“form1”,JavaScript引用了“Form1”。不同的情况可能是罪魁祸首。当然,为了保持一致性并将其作为潜在的错误消除是值得的。

此外,这是我的JavaScript是一个有点模糊,当你在javascript参考document.Form1这是由它的id属性或通过其name属性标识的元素?我真的不确定。但是,如果它是后者,那么.NET引擎不会在之前的版本中添加name属性。

最终,呈现的HTML看起来像什么?因为这就是橡胶与JavaScript搭配的道路,而不是服务器级别。

你可以尝试形式的东西:

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

只是作为一个测试。

+0

谢谢你的工作。然而,我怎么能在我的应用程序中的其他地方的下面的代码行上实现它:'Link.Attributes.Add(“href”,String.Format(“JavaScript:window.opener.document。{0} .value = \'{1:d} \';窗口。close();“,Request.QueryString [”field“],e.Day.Date));' – Charlako 2011-06-11 00:51:29

+0

尝试window.opener.document.forms ['Form1'] – 2011-06-11 00:58:31

更改ID命名会做,但更好的是,使用jQuery做这个:

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

这里有一个非jQuery的版本不改变的标记:

function onFocusAlias() 
{ 
    document.getElementById('txtAlias').value = document.getElementById('txtFirstName').value + " " + document.getElementById('txtLastName').value; 
} 

JavaScript是病例敏感。您引用document.Form1,但表单元素的ID为form1。在你显示的标记中,document.Form1未定义。