服务器产生的脚本与手工添加的脚本冲突

本文介绍了如何在手动添加Dropdownlist的onchange事件时避免与服务器事件冲突,通过添加不可见的保存按钮并在onchange事件中调用其生成的程序来实现保存与提醒功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >



服务器控件的服务器事件一般对应到客户端控件的相应事件,如Dropdownlist的SelectedIndexChanged事件对应HTML <Select>的onchange事件。如果你要手工增加一个onchange事件,则会在客户端产生两个onchange,浏览器就会忽略掉一个。比如用户希望每当改变了Dropdownlist中的选项就保存到数据库(虽然不是很常见,但确实有这种需要),但同时还希望提醒用户是否确实要做保存。显然,保存的代码应该放在SelectedIndexChanged事件中,而提醒的工作应该手工加一段onchange事件。结果就是两个onchange只能执行一个。正确的方法应该是添加一个不可见的保存按钮,在手工增加的onchange事件中调用此按钮生成的程序。

Page_Load方法如下:

Dim sCmd as string 

sCmd=Page.GetPostBackClientHyperlink(btnUpdate, "")

If not page.isPostback then

Dropdownlist1.Attributes.add("onchange","ConfirmUpdate(""" & sCmd & """)")

End if


ConfirmUpdate函数如下

<Script language=”javascript”>

function ConfirmUpdate(cmd){

if confirm(“Are you sure to update?”)

eval(cmd);

}

</Script>

这里利用了Javascript eval函数来调用一个字符串中包含的命令。需注意的是包含命令的字符串不能用单引号括起来,因为自动生成的脚本中包括单引号,所以这里用两个双引号表示字符串本身的双引号。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值