2011-11-17 56 views
0

我要执行从服务器端JavaScript函数,所以我说下面一行:如何在一个函数中执行多个ClientScript.RegisterStartupScript()?

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?

+2

不附加在你的第一个工作的其他呼叫? '“ValidateRequiredFields(电子邮件); ValidateRequiredFields(onlynmeric);”' – V4Vendetta

+0

它工作正常..谢谢。 –

+0

太好了..你可以选择接受它作为回答:) – V4Vendetta

回答

2

MSDN

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

所以把召集应该为你工作

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

什么附加你的电话是这样的:

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

key参数必须不同。它不能同时为@msg,它将取代第一一个与一个

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