這幾天都在用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代碼):——暫且命名為“代碼二” 1……
2<tr>
3 <td align="right">
4 <asp:Label ID="UserNameLabel" runat="server" AssociatedControlID="UserName">使用者名稱:</asp:Label></td>
5 <td>
6 <asp:TextBox ID="UserName" runat="server"></asp:TextBox>
7 <asp:RequiredFieldValidator ID="UserNameRequired" runat="server" ControlToValidate="UserName"
8 ErrorMessage="必須填寫“使用者名稱”。" ToolTip="必須填寫“使用者名稱”。" ValidationGroup="CreateUserWizard1">*</asp:RequiredFieldValidator>
9 <input id="Test" type="button" value="檢驗" onclick="return TestonClick()" />
10 </td>
11 </tr>
12……
(備忘:現在的代碼沒有問題可以啟動並執行很正常)
請看在“代碼一”中的第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呢?