我的机器中有一个ASP TextBox,如下所示:
<INPUT onchange=jsCheckSpecialApproval();id=ctl00_MainContent_SpecialApprovalTB
style="WIDTH: 100%" readOnlymaxLength=10000 name=ctl00$MainContent$SpecialApprovalTB>
但是当我部署到其他机器时,文本框变为如下:
<INPUT onchange=jsCheckSpecialApproval();id=MainContent_SpecialApprovalTB
style="WIDTH: 100%" readOnlymaxLength=10000 name=ctl00$MainContent$SpecialApprovalTB>
显然,不同机器生成的文本框控件ID不同。
(ctl00_MainContent_SpecialApprovalTB = > MainContent_SpecialApprovalTB)
因此,这会导致某个计算机可能无法读取此文本框的问题,因为我写了getElementById("ctl00_MainContent_SpecialApprovalTB")
在javascript中阅读或设置此文本框。
那为什么会这样呢?有没有办法更好地做到这一点,以及如何防止这种情况再次发生?
非常感谢您的回答!
答案 0 :(得分:1)
如果必须在javascript中使用控件ID,则必须将客户端ID模式设置为静态。
https://msdn.microsoft.com/en-us/library/system.web.ui.control.clientidmode(v=vs.110).aspx
HomeViewController *homeVC = (HomeViewContller *)[mainStoryboard instantiateViewControllerWithIdentifier:@"HomeViewController"]
UINavigationController *navController = [[UINavigationController alloc] initWithRootViewController: homeVC]
[self.window setRootViewController:navController];
ClientID值设置为ID属性的值。如果控件是命名容器,则该控件将用作其包含的任何控件的命名容器层次结构的顶部。
如果你想在aspx页面中定义它,你可以这样做:
Control.ClientIDMode Property