获取confirm返回值的故事
2015-09-28 11:09
633 查看
也许很多人看了这个标题就会不屑看下去,大可以说网上多的去了这种问题的文章,的确,当我碰到这个问题的时候,我也首先在网上找了很多资料,但是没有合适的,或者说没有讲的清晰的,而后,我又问了几个牛人,以及几位同事,也都没有搞懂,后来在我老大的帮助下,最终还是解决了,所以我觉得有这个必要写出来给大家分享下~
废话说了这么多,还是直奔主题吧~
我的要求是这样的,页面上有个表单,表单的内容是绑定数据库的,需要动态刷新的,而后有个按钮——save,点击之后为保存到数据库——Insert_Save(),又有个按钮submit,点击之后直接提交到数据库Insert_Submit(),两者的区别是插入到不同的表中,现在我要设计这个保存按钮,要求经过2个函数的判断,才能够执行insert,分别是Ckeck_Empty()以及Check_Formal(),即检测是否全填了和格式是否都正确,这两个方法都在后台完成了,现在的任务就是,在点击save按钮之后,需要弹出confirm选择框,“是否需要直接提交?”,如果点击“是”,则执行与submit按钮相同的操作,若否则进行save操作,那我如何才能把confirm的值保存下来呢?
很多人可能这么想:(因为要求在后台执行)
ScriptManager.RegisterStartupScript(
this.Page,
this.Page.GetType(),
this.ClientID,
"<script language=\"javascript\www.0771ybgc.com" type=\"text/javascript\" >
if(confirm('需要直接提交吗?'))
{
Insert_Save()
}
else
{
Insert_Submit()
}
</script>" ,
false);
然后再实际的操作当中,却发现了这个弹出框到了所以操作最后才执行,也就是说,我并没有执行所谓的询问操作而直接根据默认状态insert到数据库了,原因很简单,因为首先执行的是服务器端,然后才执行客户端~因此此方法不能解决.
而后,我又在网上看到了将返回值保存到session或者cookie的方法,原本应该是可以的,但是我上述几个函数都是需要传入其他参数(datarow,type_name等),因此如果使用session和cookie则这些传入参数将会取不到~
最后,实在没办法了,就只好去问老大,后来老大苦思冥想,终于想到个小窍门————通过隐藏按钮赋值的方法把confirm的返回值重新传到前台:即在页面上放一个隐藏按钮btn_hide,width设为0,visible设为false,然后将原本save的触发事件里confirm的返回值存到btn_hide.value中,然后将insert到数据库的操作放到btn_hide的触发事件中,将需要传入的dr以及type——name放在session中,即将数据库录入的操作存放在btn_hide_Click()中,也就是通过注册隐藏按钮事件的方法,来解决传值问题~
也许你不一定遇的到像我这种棘手的情况,但是也许你也会碰到,上述的方法并不是最佳的解决情况,一定有牛人有更好的方法解决,这里只是小白的拙见,但是也想贴出来和大家分享一下~一起进步~
废话说了这么多,还是直奔主题吧~
我的要求是这样的,页面上有个表单,表单的内容是绑定数据库的,需要动态刷新的,而后有个按钮——save,点击之后为保存到数据库——Insert_Save(),又有个按钮submit,点击之后直接提交到数据库Insert_Submit(),两者的区别是插入到不同的表中,现在我要设计这个保存按钮,要求经过2个函数的判断,才能够执行insert,分别是Ckeck_Empty()以及Check_Formal(),即检测是否全填了和格式是否都正确,这两个方法都在后台完成了,现在的任务就是,在点击save按钮之后,需要弹出confirm选择框,“是否需要直接提交?”,如果点击“是”,则执行与submit按钮相同的操作,若否则进行save操作,那我如何才能把confirm的值保存下来呢?
很多人可能这么想:(因为要求在后台执行)
ScriptManager.RegisterStartupScript(
this.Page,
this.Page.GetType(),
this.ClientID,
"<script language=\"javascript\www.0771ybgc.com" type=\"text/javascript\" >
if(confirm('需要直接提交吗?'))
{
Insert_Save()
}
else
{
Insert_Submit()
}
</script>" ,
false);
然后再实际的操作当中,却发现了这个弹出框到了所以操作最后才执行,也就是说,我并没有执行所谓的询问操作而直接根据默认状态insert到数据库了,原因很简单,因为首先执行的是服务器端,然后才执行客户端~因此此方法不能解决.
而后,我又在网上看到了将返回值保存到session或者cookie的方法,原本应该是可以的,但是我上述几个函数都是需要传入其他参数(datarow,type_name等),因此如果使用session和cookie则这些传入参数将会取不到~
最后,实在没办法了,就只好去问老大,后来老大苦思冥想,终于想到个小窍门————通过隐藏按钮赋值的方法把confirm的返回值重新传到前台:即在页面上放一个隐藏按钮btn_hide,width设为0,visible设为false,然后将原本save的触发事件里confirm的返回值存到btn_hide.value中,然后将insert到数据库的操作放到btn_hide的触发事件中,将需要传入的dr以及type——name放在session中,即将数据库录入的操作存放在btn_hide_Click()中,也就是通过注册隐藏按钮事件的方法,来解决传值问题~
也许你不一定遇的到像我这种棘手的情况,但是也许你也会碰到,上述的方法并不是最佳的解决情况,一定有牛人有更好的方法解决,这里只是小白的拙见,但是也想贴出来和大家分享一下~一起进步~
相关文章推荐
- 艾伟_转载:获取confirm返回值的故事
- 基础篇:获取线程返回值与守护线程的创建(二)
- VC获取DOS命令返回值
- Ipmitool工具中文注释及获取返回值的解释2
- .net存储过程,获取返回值
- Java代码获取oracle存储过程返回值
- node.js如何获取request模块中异步函数回调的返回值
- 子函数的调用与返回,主函数获取返回值,函数工作路径
- Android onActivityResult获取返回值的用法
- JQuery提交Form表单,获取返回值
- python 获取shell命令返回值
- SqlServer获取存储过程返回值的实例
- C#获取存储过程返回值和输出参数值
- Jquery关于ajax中无法在success中获取返回值的问题
- asp.net中获取Layer弹出层返回值
- .net get post 传递参数 获取返回值
- Android组件通讯与广播消息(3)—获取 Activity 的返回值
- java获取Linux命令行返回值并在jsp换行打印
- SqlServer获取存储过程返回值的实例
- jquery $.post ie获取不到返回值的解决方法