从下拉列表中调用javascript方法
本文关键字:javascript 方法 调用 下拉列表 | 更新日期: 2023-09-27 18:07:19
我有一个下拉列表,当选定的值是一定的值时我需要做一些事情然后重定向到一个新的页面
现在我认为最好的方法是像这样使用response. write ()
Response.Write(<script>);
Response.Write(window.open('url'));
Response.Write(</script>);
或page . clientscript . registerstartupscript()方法调用javascript方法,该方法将在不同的选项卡中打开新页面,如
Page.ClientScript.RegisterStartupScript(GetType(),"GoToURL", "<script language=JavaScript>GoToURL(" + url + ")</script>");
javascript看起来像
<script type="text/javascript">
function GoToURL(url)
{
window.open(url);
}
</script>
我尝试了这两种方法和响应。编写方法只是无法解析响应请求,当我使用page。clientscript . registerstartupscript
时,什么也没有发生有人能看出我在哪里做错了吗?或者有其他可能的方法吗?
请注意,这两段代码都是在下拉列表
的SelectedIndexChanged方法中执行的Thanks in advance
最后,我只是屈服了,并最终使用一个按钮来做背后的代码和java脚本(得到了爱那些onclientclick事件:p),因为似乎没有工作,让java脚本运行从下拉菜单的onselected更改事件
谢谢你的建议:)
问题是,在这两种情况下,当页面是发回并返回到html,他们没有找到你的JavaScript函数即:GoToUrl(),因为它不是最初加载。你可以在c#按钮点击事件中调用window.open(url);
方法。这样的:
Page.ClientScript.RegisterStartupScript(GetType(),"GoToURL", "<script language=JavaScript>window.open(" + url + ");</script>");
我没有试过,但我认为这应该有效。
希望对大家有所帮助
你可以使用隐藏字段来代替,在后面的代码中,用URL设置隐藏字段的值。
在pageLoad()
javascript函数检查隐藏字段的值,如果它不是空的,使用window.open(hiddenFieldValue)
类似:
<script type="text/javascript">
function pageLoad()
{
// Use $('#' + '<%= hfURL.ClientID %>') if hidden field has runtat="server"
if($('#' + '<%= hfURL.ClientID %>').val())
window.open($('#' + '<%= hfURL.ClientID %>').val());
// OR window.open($("hfURL").val(), '_blank');
}
</script>
编辑:
根据你的评论,我认为这是你在寻找的解决方案。您可以为每个下拉列表值创建一个案例,并根据这些案例,在新标签中将用户重定向到不同的url。 protected void ddlAuthoritytype_SelectedIndexChanged(object sender, EventArgs e)
{
var port = Request.Url.IsDefaultPort ? "" : ":" + Request.Url.Port.ToString();
string ddl = ddlAuthoritytype.SelectedValue;
switch (ddl)
{
case "AL":
var script = string.Format("window.open('{0}://{1}{2}{3}')", Request.Url.Scheme, Request.Url.Host, port, ResolveUrl("~/alabama-state-tax-calculator.aspx"));
ScriptManager.RegisterStartupScript(this, this.GetType(), "newWindow",script, true);
break;
}
}