大家在实际工作中用js的时候可能会遇到这种情况:
confirm()弹出的对话框,当用户点击“取消”的时候,表单仍然提交的问题;
一般来说这种问题产生的原因有一下几点:
1:在判断comfirm()为“取消”的时候,我们没有return false;即:
if(!comfirm("确定要提交表单吗?")){
     return false;
}
这种情况比较简单,不是我今天谈的重点,只要加入这句话就ok了
2:还有一种情况,当用户点击“取消”的时候,并且已经return false的时候,仍然会提交表单(这是今天的重点)
   这种情况一般产生在按钮的onclick()时间中;产生的原因是:
   当点击按钮的时候,在弹出confirm()对话框之前,有很多的js需要执行,而大家都知道:点击按钮的时候,表单会自 动 提交的;所以,就没有等到用户点击“取消”按钮,form表单已经提交了,自然就不会管你有没有点击"取消"了;
   解决方法:呵呵,相信大家最关心的还是这个,其实知道了原因就很容易解决了:
   只要在按钮的onclick()事件的方法前面加一个return 就ok了,这样肯定会先等返回结果在提交表单了:
   例:
   <input type="button" value="电我吧!" onclick="return method()">

解决方案 »

  1.   

    <input type="button" value="电我吧!" onclick="return method()">
    点击这个按钮,表单会自动提交??不在方法最后显示调用form.submit();怎么提交?不明白了LZ不会说的是form的onsubmit事件吧
      

  2.   

    <input type="submit" value="点我的是猪!" onclick="return confirm('您是头猪?')">
      

  3.   

    如果说,这个函数是包含在form的submit中的话,做了return就OK。单独的按钮控件……除非所有按钮都绑定了提交事件,那咱就无话可说了、
      

  4.   

    可以用href呀!
    再加一个onclick事件!
    在<href="....action" onclick="confirm('.....?')">按钮
    如果点击按钮,先弹出确定和取消,无论点击哪个都提交action可以在onclick中加入return 如下
    <href="....action" onclick=" return confirm('.....?')">这样点击确定提交action,点击取消不提交action!!
      

  5.   

    lz说的是的,我一般调用这样的js方法时都加了return的
      

  6.   

    试试 returnValue = false; 看看这句话行不行.
      

  7.   

    当点击按钮的时候,在弹出confirm()对话框之前,有很多的js需要执行,而大家都知道:点击按钮的时候,表单会自 动 提交的;所以,就没有等到用户点击“取消”按钮,form表单已经提交了,自然就不会管你有没有点击"取消"了; 
    ---------------------------------------------不是没有等你点击 “取消”。
    事实上是有等你点击“取消” 后才提交的。 只是忽略了你点的是哪个
      

  8.   

    function confirmAct() {  
       if(confirm('确定要执行此操作吗?')) 
        {         return true;     }   
      return false; } 记得应该把confirm放在一个函数里才起作用,学习了 呵呵 
      

  9.   

    对于楼主的看法,我持有保留意见,我水平有限大家多提出,不知道大家怎么做的?
    为了获得正确的答案,不让大家误解,我想大家都来讨论讨论下
    我不知道楼主提到的是哪个情况,
    1. 首先对于button全部代码需要执行:那么只是注册一句脚本,提前在page_load中注册下就可以了,Button3.Attributes.Add("onclick", "return confirm('are you sure ? ')");
    是的,这时候必须加上return
    2. 其次对于button前半部分代码执行,弹出confirm后,是否执行后面代码:那么注册一个ScriptClient,
    ScriptManager.RegisterStartupScript(Button1, this.GetType(), "testKey", "test()",true);
    这时候不可以使用return,会报js错误,'return' statement outside of function
    如果实在是需要执行下面的代码怎么做呢?解决的方法还很多:
    (1).cs coding,执行后台代码public string test(){}
    ScriptManager.RegisterStartupScript(this, this.GetType(), "onclick", "if(confirm('are you sure ? ')){alert(\"<%= test() %>\");
    (2).隐藏button的click事件
    ScriptManager.RegisterStartupScript(UpdatePanel1, UpdatePanel1.GetType(), " ", "document.getElementById( ' " + HelpSubmitButton.ClientID + " ').click(); ", true);
    (3)貌似还有种方法不太记得了等等吧,也挺简单
    上面就是我个人理解的两种情况,第二种有三种解决办法...
    就楼主的描述,"这种情况一般产生在按钮的onclick()时间中;产生的原因是"
    应该是第二种情况吧,不知道大家和楼主到底是怎么解决的,让大家了解到这种解决方式,
    我们没有办法改变button提交,个人觉得只能是confirm中判读是否执行不同情况的代码.
    这里我没什么恶意,楼主如果真是这种情况的话,不知道到底怎么解决,毕竟我水平有限...
      

  10.   

    JavaScript板块没有人了,顶顶吧
      

  11.   

    这时候不可以使用return,会报js错误,'return' statement outside of function ScriptManager.RegisterStartupScript(Button1, this.GetType(), "", "new function(){return confirm('are you sure ? '))};",true); 这样写(利用匿名函数)应该可以
      

  12.   

    不好意思 复制多了个圆括号
    ScriptManager.RegisterStartupScript(Button1, this.GetType(), "", "new function(){return confirm('are you sure ? ');};",true); 
      

  13.   

    恩是的没错,哥们你遇到执行click的后半部分代码,怎么处理的?应该不是楼主的一句return 解决的吧?