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