目前,如果我在我的 SharePoint 项目中使用 JavaScript,我会将代码添加到 *.ascx 文件中的一个<script type="text/javascript"></script>
块中,并为每个元素创建一个用于ClientID
.
例如:
var test = '<%= TextBox1.ClientID %>';
现在我想在我的项目中添加一个外部 JavaScript 并在那里插入代码。但是我怎么能访问ClientID
?在我不能使用的外部 JavaScript 中<%= TextBox1.ClientID %>
。我发现了这个:在外部文件中引用服务器控件,但我不明白,这应该如何工作。如果有人可以解释我的如何访问这些 ID,那就太棒了。
顺便说一句,为什么这样:
<script type="text/javascript">
var ClientIDs = {
test1 : '<%= TextBox1.ClientID %>',
test2 : '<%= TextBox2.ClientID %>'
}
function SetButtonStatus() {
alert($(ClientIDs.test1).value);
}
</script>
不起作用,不会显示任何消息?
格雷茨
编辑1:
好的,我可以在我的外部脚本中使用 textBox1 吗?我是这样做的,这是在我的 *.ascx 文件中:
<script type="text/javascript">
var ClientIDs = {
textBox1: '<%= textBox1.ClientID %>',
textBox2: '<%= textBox2.ClientID %>'
}
</script>
在我的外部脚本中,我只有一个函数来测试它:
function test () {
alert($(ClientIDs.textBox1).val();
}
我也用"#" +
. 每次执行 test() 时,我都会收到以下错误:
"document.getElementById(...)" is null or not an object
编辑 2:
我错过了)
警报中的一个。但现在我收到一条消息,指出该变量未定义。如果我使用:$('#' + ClientIDs.SumbitSearch).val()
我只得到文本而不是控件的 ID。
编辑3: 目前我使用:
<script type="text/javascript">
var ClientIDs = {
test1 : '<%= TextBox1.ClientID %>',
test2 : '<%= TextBox2.ClientID %>'
}
function test() {
alert($('#' + ClientIDs.test1).attr("id")));
}
</script>
在我的 *.ascx 文件中,它可以工作。我不喜欢这种方式......它在外部 JS 中不起作用,引用不起作用。如果有人有其他想法,可以与 .net 3.5 一起使用,如果他让我知道,那就太好了。