如何在一个函数中执行多个ClientScript.RegisterStartupScript()
本文关键字:执行 ClientScript RegisterStartupScript 函数 一个 | 更新日期: 2023-09-27 18:15:03
我想从服务器端执行javascript函数,所以我添加了以下行:
ClientScript.RegisterStartupScript(Page.GetType(), "@msg", "ValidateRequiredFields('" + txtRequiredFieldValidation.ClientID + "');", true);
可以正常工作。但我想在上述语句后立即执行相同的JavaScript函数。所以我添加了以下行:
ClientScript.RegisterStartupScript(Page.GetType(), "@msg", "ValidateRequiredFields('" + txtEmailValidation.ClientID + "');", true);
ClientScript.RegisterStartupScript(Page.GetType(), "@msg", "ValidateRequiredFields('" + txtOnlyNumbersValidations.ClientID + "');", true);
,但我注意到只有第一个startpscript执行。为什么?我如何在一个函数中执行多个startpscript ?
key
参数必须是不同的。它不能同时是@msg
,它将用第二个一个
ClientScript.RegisterStartupScript(Page.GetType(), "@msg1", "ValidateRequiredFields('" + txtEmailValidation.ClientID + "');", true);
ClientScript.RegisterStartupScript(Page.GetType(), "@msg2", "ValidateRequiredFields('" + txtOnlyNumbersValidations.ClientID + "');", true);
根据MSDN
RegisterStartupScript方法添加的脚本块在页面完成加载时执行,但在页面的OnLoad事件引发之前执行。脚本块不能保证按照注册的顺序输出。如果脚本块的顺序>重要,则使用StringBuilder对象将脚本集合到一个字符串中,然后将它们全部注册到一个客户端脚本块中。
所以把电话放在一起应该对你有用
"ValidateRequiredFields('" + txtEmailValidation.ClientID + "');
ValidateRequiredFields('" + txtOnlyNumbersValidations.ClientID + "');"
像这样添加调用怎么样:
ClientScript.RegisterStartupScript(Page.GetType(), "@msg",
"ValidateRequiredFields('" + txtEmailValidation.ClientID + "');
ValidateRequiredFields('" + txtOnlyNumbersValidations.ClientID + "');",
true);