目前,如果在我的JavaScript项目中使用SharePoint,我会将代码添加到*.ascx文件中的<script type="text/javascript"></script>块中,并为每个元素创建一个ClientID变量。
例如:
var test = '<%= TextBox1.ClientID %>';现在,我想向我的项目中添加一个外部JavaScript,并在那里插入代码。但是我怎样才能进入ClientID呢?在外部JavaScript中,我不能使用<%= TextBox1.ClientID %>。我发现了这个:在外部文件中引用服务器控件,但我不明白,这应该如何工作。如果有人能解释我的,如何访问ids,那就太棒了。
顺便问一下,为什么:
<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工作,这将是很好的,如果他让我知道。
发布于 2011-10-24 14:04:11
为了解释并简化链接到的问题,他们所做的就是从页面/服务器控件中设置一个JavaScript变量,并从外部JavaScript文件中读取该变量。
例如,您的*.ascx文件将包含以下JavaScript:
var textBox1 = '<%= TextBox1.ClientID %>';然后,您的外部JavaScript文件可以只引用变量textBox1。
现在,还有其他方法来实现这一点。如果使用的是ASP.NET 4,则可以使用新的属性ClientIDMode来防止ASP.NET更改If。如果不使用ASP.NET 4,也可以简单地向要选择的元素中添加一个CSS类,只需将jQuery选择器更改为使用类(不过比使用ID稍微慢一些)。
最后,在计算元素id的#选择器时,需要使用jQuery,所以这样做是可行的:
alert($('#' + ClientIDs.test1).val());发布于 2012-08-27 06:46:06
在ASP页面中:
<script>
var test2 = '<%= TextBox2.ClientID %>'
</script> 在外部JavaScript access TextBox2中,采用这种方式:
documnet.getelementByid(test2);发布于 2011-10-24 14:05:02
我从来没有找到过一个我喜欢的解决方案,但是我实现了一些工作--这些工作并不完全是可怕的:
也许其他人会对这个问题有更好的解决方案--我期待着看到其他的回应。
https://stackoverflow.com/questions/7876751
复制相似问题