2011-06-11 126 views
1

我最近將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

回答

1

服務器版本應該不會影響到JavaScript的(因爲這一切都在瀏覽器處理在客戶端),但如果有變化,則.NET引擎,我想這可能會呈現不同的HTML到瀏覽器。

我注意到的第一件事是form標記的id屬性是「form1」,JavaScript引用了「Form1」。不同的情況可能是罪魁禍首。當然,爲了保持一致性並將其作爲潛在的錯誤消除是值得的。

此外,這是我的JavaScript是一個有點模糊,當你在javascript參考document.Form1這是由它的id屬性或通過其name屬性標識的元素?我真的不確定。但是,如果它是後者,那麼.NET引擎不會在之前的版本中添加name屬性。

最終,呈現的HTML看起來像什麼?因爲這就是橡膠與JavaScript搭配的道路,而不是服務器級別。

0

你可以嘗試形式的東西:

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

0

更改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; 
} 
0

JavaScript是病例敏感。您引用document.Form1,但表單元素的ID爲form1。在你顯示的標記中,document.Form1未定義。

相關問題