這幾天都在用Atlas做一個網站的Demo,遇到了一個自己不懂的問題。
請先看下面的用Atlas調用本地Web Services實作檢查輸入使用者名是否在資料庫中存在的代碼:——暫且命名為“代碼一”
1

<script language="javascript" type="text/javascript">
2

function TestonClick()
3
{
4
var username = $("ctl00_CPHolder1_CreateUserWizard1_CreateUserStepContainer_UserName").value;
5
AtlasService.TestUser(username,onTestUserComplete);
6
}
7

function onTestUserComplete(result)
8
9
if (result)
10
$("user_sidebarTR").innerHTML = "恭喜您,您可以使用此使用者名,請繼續……";
11
else
12
$("user_sidebarTR").innerHTML = "對不起,使用者名已存在,請您更換……";
13
14

</script>
再結合下面的代碼(ASP.Net2.0工具箱登入頁籤中“CreateUserWizard”伺服器控件中的一部分Html代碼):——暫且命名為“代碼二”

……

<tr>

<td align="right">

<asp:Label ID="UserNameLabel" runat="server" AssociatedControlID="UserName">使用者名:</asp:Label></td>

<td>

<asp:TextBox ID="UserName" runat="server"></asp:TextBox>

<asp:RequiredFieldValidator ID="UserNameRequired" runat="server" ControlToValidate="UserName"

ErrorMessage="必須填寫“使用者名”。" ToolTip="必須填寫“使用者名”。" ValidationGroup="CreateUserWizard1">*</asp:RequiredFieldValidator>

<input id="Test" type="button" value="檢驗" onclick="return TestonClick()" />

</td>

</tr>

(備注:現在的代碼沒有問題可以運作的很正常)
請看在“代碼一”中的第4行
var username = $("ctl00_CPHolder1_CreateUserWizard1_CreateUserStepContainer_UserName").value;
。這段代碼是想查找到在“代碼二”中第6行的
<asp:TextBox ID="UserName" runat="server"></asp:TextBox>
TextBox伺服器控件的值。如果我把“代碼一”中的第4行改為
var username = $("UserName").value;
是錯誤的。因為程式運作後“代碼二”中TextBox伺服器控件的ID并不是編寫時給的“ID="UserName"”而是“ID="ctl00_CPHolder1_CreateUserWizard1_CreateUserStepContainer_UserName"”,是以我想請問:如果我不直接像現在在“代碼一”中第4行那樣寫出具體的伺服器控件ID,我該如何取出伺服器控件的ID呢?
本文轉自剛剛部落格園部落格,原文連結:http://www.cnblogs.com/lijigang/archive/2006/10/21/535687.html,如需轉載請自行聯系原作者