获取confirm返回值的故事

  也许很多人看了这个标题就会不屑看下去,大可以说网上多的去了这种问题的文章,的确,当我碰到这个问题的时候,我也首先在网上找了很多资料,但是没有合适的,或者说没有讲的清晰的,而后,我又问了几个牛人,以及几位同事,也都没有搞懂,后来在我老大的帮助下,最终还是解决了,所以我觉得有这个必要写出来给大家分享下~

  废话说了这么多,还是直奔主题吧~
  我的要求是这样的,页面上有个表单,表单的内容是绑定数据库的,需要动态刷新的,而后有个按钮——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\" 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()中,也就是通过注册隐藏按钮事件的方法,来解决传值问题~

  也许你不一定遇的到像我这种棘手的情况,但是也许你也会碰到,上述的方法并不是最佳的解决情况,一定有牛人有更好的方法解决,这里只是小白的拙见,但是也想贴出来和大家分享一下~一起进步~

时间: 2024-10-21 15:24:21

获取confirm返回值的故事的相关文章

asp.net操作javascript:confirm返回值的两种方式_实用技巧

在asp.net中使用confirm可以分为两种: 1.没有使用ajax,confirm会引起也面刷新 2.使用了ajax,不会刷新 A.没有使用ajax,可以用StringBuilder来完成. (一)asp.net用StringBuilder控制后台操作javascript:confirm返回值,此方法比较烦琐 1.后台启动事件 StringBuilder sb = new StringBuilder(); sb.Append("<script language='javascript

asp.net操作javascript:confirm返回值的两种方式

 在asp.net中使用confirm可以分为两种: 1.没有使用ajax,confirm会引起也面刷新 2.使用了ajax,不会刷新 A.没有使用ajax,可以用StringBuilder来完成. (一)asp.net用StringBuilder控制后台操作javascript:confirm返回值,此方法比较烦琐 1.后台启动事件   1 2 3 4 5 6 7 StringBuilder sb = new StringBuilder(); sb.Append("<script lan

SqlServer获取存储过程返回值的实例_MsSql

1.OUPUT参数返回值 复制代码 代码如下: CREATE PROCEDURE [dbo].[nb_order_insert](@o_buyerid int ,@o_id bigint OUTPUT)ASBEGINSET NOCOUNT ON;BEGININSERT INTO [Order](o_buyerid )VALUES (@o_buyerid )SET @o_id = @@IDENTITYENDEND 存储过程中获得方法: 复制代码 代码如下: DECLARE @o_buyerid i

C# 获取IPCONFIG 返回值

在我们获取本机局域网IP以及其他相关信息时,直接调用系统IPCONFIG,也是一种很有效的方法. 以下是我用C#实现的 读取ipconfig的返回值的代码:     代码 /// <summary>        /// 获取IPCONFIG返回值        /// </summary>        /// <returns>返回 IPCONFIG输出</returns>        public static string GetIPConfigR

Java执行sql语句并获取指定返回值

当我们插入一条数据的时候,我们很多时候都想立刻获取当前插入的主键值返回以做它用.我们通常的做法有如下几种: 1.先 select max(id) +1 ,然后将+1后的值作为主键插入数据库: 2.使用特定数据库的 auto_increment 特性,在插入数据完成后,使用 select max(id) 获取主键值: 3.对于Oracle,使用 sequence 获取值. 对于以上3种方法都无法绝对保证在高并发情况下的操作的原子性. 现记录以下几种获取数据库主键值方法: 1.数据库原生支持的sql

JAVA 反射获取返回值为MAP类型中的key

问题描述 publicMap<String,Object>getInfo(){Map<String,Object>data=newHashMap<String,Object>();data.put("a",1);returndata;} JAVA反射机制能获取到返回值MAP中的键a嘛?如果不行,有什么其它方法? 解决方案 解决方案二:这要用什么反射map的原生API就可以获取到KEY了解决方案三:Class<YourClass>clazz

JQuery异步获取返回值中文乱码的解决方法_jquery

用jqgrid异步获取列表值,遇到个问题,服务器端从数据库取到的数据没有出现中文乱码问题(日志打出来是没有乱码的),但是异步传到客户的时候却出现了乱码. 服务器端已经编码过了(UTF-8编码).开始一直怀疑是客户端的问题,比如客户端和服务器端编码不一致啊,也怀疑是不是jqGrid工具函数中少配了 contentType: "application/x-www-form-urlencoded; charset=utf-8",   等等问题. 结果都不是,纠结了几个小时,后来经过大牛的提醒

获取JavaScript异步函数的返回值_javascript技巧

今天研究一个小问题: 怎么拿到JavaScript异步函数的返回值? 1.错误尝试 当年未入行时,我的最初尝试: <script> function getSomething() { var r = 0; setTimeout(function() { r = 2; }, 10); return r; } function compute() { var x = getSomething(); alert(x * 2); } compute(); </script> 2.回调函数

怎么通过onclick事件获取js函数返回值(代码少)_基础知识

具体过程不做详细叙述,直接上代码: 写一个弹出框,绑定onclick事件是好像控制不了它的返回值.代码如下 function createBtn(){ for(var i = 0; i < _this.btn.length; i++){ var btn = document.createElement('span'); btn.id = 'btn_' + i; btn.innerHTML = _this.btn[i]; btn.style.padding = '5px 15px'; btn.st