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

时间:2011-11-17 11:32:57

标签: c# asp.net vb.net

我想从服务器端执行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);

但是我注意到只有第一个startupscript执行..为什么?如何在一个函数中执行多个startupscript?

3 个答案:

答案 0 :(得分:3)

key参数必须不同。它不能同时为@msg,它会用 second 替换第一个

ClientScript.RegisterStartupScript(Page.GetType(), "@msg1", "ValidateRequiredFields('" + txtEmailValidation.ClientID + "');", true);
ClientScript.RegisterStartupScript(Page.GetType(), "@msg2", "ValidateRequiredFields('" + txtOnlyNumbersValidations.ClientID + "');", true);

答案 1 :(得分:2)

根据MSDN

  

RegisterStartupScript方法添加的脚本块在页面完成加载但在页面的OnLoad事件被引发之前执行。不保证脚本块>按照它们注册的顺序输出。如果脚本块的顺序是重要的,请使用StringBuilder对象将脚本一起收集到一个字符串中,然后>然后将它们全部注册到一个客户端脚本块中。

所以把这个电话放在一起应该对你有用

"ValidateRequiredFields('" + txtEmailValidation.ClientID + "');
 ValidateRequiredFields('" + txtOnlyNumbersValidations.ClientID + "');"

答案 2 :(得分:1)

如何追加你的电话:

ClientScript.RegisterStartupScript(Page.GetType(), "@msg", 
  "ValidateRequiredFields('" + txtEmailValidation.ClientID + "');
  ValidateRequiredFields('" + txtOnlyNumbersValidations.ClientID + "');",
  true);