如题。为了避免重复提交数据,按钮加一个OnClientClick属性 OnClientClick="this.disabled=true"如果顺利,点击后没有问题。但若点击后验证控件RequiredFieldValidator或RegularExpressionValidator被激发,提示某些数据不合规,则此时即使修正数据,该按钮仍不可用。如何解决?P.S.:最终目的就是避免数据重复提交。除onclientclick方法外,其他的方法也可以。谢谢!

解决方案 »

  1.   


    关掉控件PostBack回发,要想干干净净的写就用js事件,简单多了
      

  2.   

    能否给个例子?JS压根就不会,onclientclick后面那句纯粹自己猜出来的,没想到就真蒙对了
      

  3.   


    sorry,看错了。你到底是关闭回发  还是  避免激活验证?
    貌似你的问题是 避免激活验证?CausesValidation="false" 给控件这个属性 触发事件就不会激活验证了。
      

  4.   

    sorry two...看来是我问题没说明白。页面中的验证控件是必须要有的,我不希望用户输入类似于<script>...</script>这样的内容。数据提交按钮与验证控件是关联的,这样在提交的时候才可以进行验证。如果设CausesValidation="false",验证控件也没用了。在测试中,发现点击提交按钮后至服务器回传“保存成功”的提示前,有个时间间隔,在此期间如果再次点击提交按钮,会造成重复提交相同的数据。而我希望用户点击一次仅向数据库提交一条数据,哪怕是帕金森患者,手老哆嗦。为了解决上面的问题,将提交按钮onclientclick设为this.disabled=true,使它点击后至服务器回应前暂时不可用。接踵而来的就是1楼的问题:若点击后验证控件RequiredFieldValidator或RegularExpressionValidator被激发,提示某些数据不合规,则此时即使修正数据,该按钮仍不可用。也就无法继续操作了。
      

  5.   

    用js验证,验证成功,再设置enable ,js验证无非就是判断某些输入的值是否为空,是否符合你的要求,没什么难的,看看js的语法
      

  6.   

    $("input[type='submit']").each(function ()
                {
                    $(this).bind("click", function ()
                    {
                        $(this).attr("disabled", true);
                        $(this).parents().filter("form").trigger("submit");
                    });
                });这个是通用的。
     
      

  7.   

    如果用JS验证,没什么思路。是否需要写一个通用的函数,然后在每个文本框加一个onblue,在输入完成并失去焦点的时候进行验证?其实验证也很简单,就两方面:1.必填;2.不能有非法字符。应该怎么写?谢谢!