如何在一个函数中执行多个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 ?

如何在一个函数中执行多个ClientScript.RegisterStartupScript()

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);