在下拉框中选择索引更改事件触发后面的代码中实现javascript确认框

时间:2011-01-20 13:29:10

标签: c# javascript asp.net

在我的boxLang_OnSelectedIndexChanged()事件中我得到了这个: -

 if (txtbox1.Text != "" && txtbox2.Text  != "")
        {
            ScriptManager.RegisterStartupScript(Page, Page.GetType(), "confirm", "confirm('Changing the language will clear the text in the textboxes. Click OK to proceed.');", true);
            txtbox1.Text = "";
            txtbox2.Text = "";
        }

现在发生的事情就是这样。当我从下拉列表中选择一个不同的项目时,此确认框确实显示但是它首先清除文本框的内容,然后出现此确认框。我想要的是,只有在单击“确定”时才应清除文本框内容。

我做错了什么?请帮忙。谢谢。

编辑 @jgauffin **我输入了你所拥有的回报。现在发生的事情是它只是立即清除文本框..这次甚至都没有显示确认框!什么错了?请回复...... thnx **

编辑2 我尝试如下: -

在我的BindDropDown()方法中,我添加了: -

dropdownbox1.Attributes.Add("onChange","DisplayConfirmation()");

然后在我的aspx页面中,我添加了以下脚本: -

<script type="css/javascript">
function DisplayConfirmation() {
  if (confirm('Changing the language will clear the text in the textboxes. Click OK to proceed.')) {
    __doPostback('dropdownbox1','');
  }
}

</script>

当下拉列表的选定索引发生变化时,不会调用此函数。怎么了?

编辑3: - 好的,我按如下方式更改了代码行: -

 dropdownbox1.Attributes.Add("onchange", "javascript:return DisplayConfirmation()");

仍然无法工作。我是JavaScript的新手,所有这些都有问题。非常感谢帮助。

2 个答案:

答案 0 :(得分:3)

ScriptManager.RegisterStartupScript(Page, Page.GetType(), "confirm", "return confirm('Changing the language will clear the text in the textboxes. Click OK to proceed.');", true);
需要

返回来取消取消。

答案 1 :(得分:1)

那不行。您将回发到服务器,然后注册javascript确认代码,然后清除内容。只有在页面重新加载后,javascript确认框才会实际显示,此时您已经清除了文本框值。这就像你在混淆客户端和服务器端编程一样。像javascript这样的客户端代码只会在服务器完成它并完成页面加载后执行。

你需要的是这个答案,可能是:

DropdownList autoposback after client confirmation