我想在加载ASP.NET页面时执行Javascript函数。 Javascript的purpsose是根据相应复选框的已检查状态显示一些控件。
我使用过该行:
Page.ClientScript.RegisterStartupScript(Type.GetType("System.String"), "addScript", "sethiddenMoSESfields", True)
其中sethiddenMoSESfields是我的Javascript函数的名称。
这是功能:
function sethiddenMoSESfields() {
var chkgpstatus = document.getElementById("chkGP");
var chknursestatus = document.getElementById("chkNurse");
if (chkgpstatus.checked) {
$('#ddlGP').show();
}
if (chknursestatus.checked) {
$('#ddlNurse').show();
}
}
问题是在加载页面时似乎没有正确呈现,我收到以下错误:
0x800a138f - Microsoft JScript运行时错误:预期的对象
发生错误是因为页面正在呈现函数调用,如下所示:
sethiddenMoSESfields
(function(id) {
var e = document.getElementById(id);
if (e) {
e.dispose = function() {
Array.remove(Page_ValidationSummaries, document.getElementById(id));
}
e = null;
}
})('valsum_GPSEA');
由于某种原因,它将另一个函数调用(与我的验证控件相关)编写为我的sethiddenMoSESfields函数调用的参数。我不知道为什么这样做。
有人可以帮忙吗?
答案 0 :(得分:0)
你似乎错误地调用了这个方法。 RegisterStartupScript
的第3个参数应该是您要执行的实际脚本。在你的情况下,这将是" sethiddenMoSESfields();"如果您已经在HTML中包含了函数定义。
如果没有,您必须在字符串中输入整个sethiddenMoSESfields函数定义,然后是sethiddenMoSESfields();
。像
Page.ClientScript.RegisterStartupScript(this.GetType(), "addScript", @"
function sethiddenMoSESfields() {
var chkgpstatus = document.getElementById('chkGP');
var chknursestatus = document.getElementById('chkNurse');
if (chkgpstatus.checked) {
$('#ddlGP').show();
}
if (chknursestatus.checked) {
$('#ddlNurse').show();
}
}
sethiddenMoSESfields();", true);
我改变了"到'让它更容易逃脱。此外,最好将第一个参数更改为页面特定类型。
您看到的验证脚本实际上是存在的,与您调用RegisterStartupScript
的方式无关。