2011-07-25 48 views
2

錯誤:控制標識正確渲染,但仍然得到JavaScript錯誤

Microsoft JScript runtime error: 'ctl00_ContentPlaceHolder1_txtAdmDate' is undefined 

代碼:

<input ID="txtAdmDate" runat="server" readonly="readonly" type="text" 
             tabindex="23" clientidmode="AutoID" /> 
    <a href="#" onclick="showCalendarControl(ctl00_ContentPlaceHolder1_txtAdmDate)"> 
            <img border="0" src="images/SmallCalendar.jpg" 
             style="width: 20px; height: 20px" /></a>        

的Javascript:

function showCalendarControl(textField) { 
     calendarControl.show(textField); 
    } 

HTML渲染來源:

<input name="ctl00$ContentPlaceHolder1$txtAdmDate" type="text" id="ctl00_ContentPlaceHolder1_txtAdmDate" readonly="readonly" tabindex="23" /> 
     <a href="#" onclick="showCalendarControl(ctl00_ContentPlaceHolder1_txtAdmDate)"> 
     <img border="0" src="images/SmallCalendar.jpg" 
             style="width: 20px; height: 20px" /></a> 

問題:

雖然HTML渲染源顯示控件的ID是ctl00_ContentPlaceHolder1_txtAdmDate和同樣傳遞給javascript函數的錯誤是generated.I已經嘗試設置的ClientIDMode來自動識別和靜態但沒有任何工程。需要你們幫助解決這個問題。

+0

你的calendarControl.show方法期望什麼 - 它是一個ID的字符串(因爲這不是它目前得到的)?另外,你有什麼錯誤? – Paddy

回答

0

首先,它看起來像你在裏面母版頁或用戶控件(因此名字改編),並且在這種情況下,你不應該承擔怎麼樣這個名字將會被硬編碼所打亂。如果您使用不同的母版頁或將用戶控件移動到另一個頁面,則此錯位名稱可能會有所不同。要解決該問題,請改用ClientID屬性。

此外,您不能只通過名稱直接引用控件來讓Javascript找到它,因爲控件不是全局變量。相反,您可以使用document.getElementById來查看控件的句柄。

<a href="#" onclick="showCalendarControl(document.getElementById('<%=txtAdmDate.ClientID%>')"> 
+0

感謝此解決方案。乾杯:) – mkkvs

0

當你這樣說:

showCalendarControl(ctl00_ContentPlaceHolder1_txtAdmDate) 

你假設ctl00_ContentPlaceHolder1_txtAdmDate是一個變量,但它不是一個變量,它僅僅是一個DOM屬性id。你可以這樣說:

showCalendarControl(document.getElementById('ctl00_ContentPlaceHolder1_txtAdmDate')) 

把它變成一個對象的函數調用內部或者你可以發送一個ID showCalendarControl,讓它打開ID爲一個對象:

onclick="showCalendarControl('ctl00_ContentPlaceHolder1_txtAdmDate')" 

再調整showCalendarControl

function showCalendarControl(textFieldId) { 
    var textField = document.getElementById(textFieldId); 
    calendarControl.show(textField); 
} 
+0

感謝你給我的第一個解決方案爲我工作。第二個解決方案仍然給出了同樣的錯誤。我將在我的空閒時間工作。謝謝:) – mkkvs

+0

@mkkvs:邁克清楚地知道他的ASP.net比我更好(但是這樣做一塊石頭是誠實的),他比我更值得。 –

相關問題