Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/backbone.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript OnClick绕过表单提交_Javascript_Jquery_Forms_Javascript Events_Submit - Fatal编程技术网

Javascript OnClick绕过表单提交

Javascript OnClick绕过表单提交,javascript,jquery,forms,javascript-events,submit,Javascript,Jquery,Forms,Javascript Events,Submit,我有一张像这样做的哑巴的表格 <form id= 'lol' name = 'whyyyyy'> <input name='dumbo'> <input name='idiot'> <input type='submit' value='i have no idea why he done it like this' onclick='document.lol.submit()'> </form> 但是内联提交命令似乎绕过了jQue

我有一张像这样做的哑巴的表格

<form id= 'lol' name = 'whyyyyy'>
<input name='dumbo'>
<input name='idiot'>

<input type='submit' value='i have no idea why he done it like this' onclick='document.lol.submit()'>
</form>
但是内联提交命令似乎绕过了jQuery函数

有人能把光劈成碎片吗

编辑:

  • 表格不能更改,我没有更改的权限
  • 点击代码应该触发提交功能,它包含一些复杂的代码验证墙。所以,我必须把他触发的事件处理掉,但我现在不能这样做
  • 提交功能应在发送时触发,但不会触发
  • 下面是jfiddle中的代码示例。正如您所看到的,jQuery通过了它


    如果您不需要“提交”按钮,为什么不使用常规按钮

    <input type="button" />
    
    
    
    
    

    只需使用普通按钮,而不是提交按钮

    如果要绕过“提交”按钮,可以取消该按钮的类

     <input type='submit' class='cancel' value='i have no idea why he done it like this' onclick='document.lol.submit()'>
    

    在您的附加JavaScript中,删除内联onclick事件,并用您想要的内容替换它。问题解决了


    您也可以完全删除他的按钮,并用您选择的按钮替换它。

    删除
    document.lol.submit
    功能。这样,你可以做任何你想做的事

    // Magic line
    delete document.lol.submit;
    
    // Or
    $('form[name="whyyyyy"] input[type=submit]').attr('onclick', '');
    
    $(document).ready(function(){
        $('form[name="whyyyyy"]').submit(function(e){
            e.preventDefault();
            alert(1);
            return false;
        });
    });
    
    移除onclick

    $('input[type=submit]').attr('onclick','')
    
    然后将click事件添加到function ready

     $('input[type=submit]').on('click',function(){
          //do your event
    });
    

    好的,如果我做对了,您可以删除内联事件处理程序
    onclick
    ,并添加自定义处理程序(在其中执行验证和所有必要步骤):


    您不一定需要使用jquery来实现这一点。您可以使用标准javascript

    $(document).ready(function(){
    
        document.whyyyyy.submit = function(e){
    
            alert(1);
            return false; 
    };
    });
    


    这个例子是可行的,但您可能遇到了jquery错误

    这不是我的表单,我必须实现一个工作循环,不能更改遗留代码。。Q_uuu_uu_u_u_u_u_u_u_u_u_u_u_u_u_u_u_u_u_u_u_u_u_u_u_u_u_u_u_u_u_u_u_u_u_u_u___u______u__,executuion处理程序被忽略。根据我的测试,内联函数实际上不起作用,您的脚本可以成功阻止表单提交。因此,请获得更改它的许可。你现在工作的限制是可笑的!正如在回复@RiccoE时指出的,我不能改变这一部分。。。只有文档准备就绪的部分不能自己编辑表单,需要从文档准备就绪功能为其实现解决方案。然后将类cancel添加到文档准备就绪功能中的submit按钮。addClass('cancel')这将实现什么?很抱歉,我不能这样做,因为我不能直接编辑表单,而且表单在点击功能中有一些巨大的代码墙。哪一个最终触发了表单提交,忽略了jquery,因为它在如此低的级别上被触发。你能保存点击功能并在你完成新的东西后调用它吗?那不起作用,刚刚尝试过。我猜是因为它是以一个表示js新实例的内联代码发送的。“删除”功能无法执行,或者根本不知道是什么。@Sangoku两种功能都试过了吗?我不能使用“删除单击”功能,因为它有一些巨大的遗留代码。@Sangoku然后将其删除,存储在某个地方,阻止窗体,然后重新运行您存储的功能。如果提交发生在函数中,您必须更改它。我找到了解决方案,不是jqrey,但仍然可用。您应该使用正确的选择器仅获取提交按钮
    $('input[type=submit]”)
    遗憾的是,没有。单击函数是由一个像2k行这样的文件怪物生成的,它已经超过10年了。。。但我选择将最终结果submit操作绑定到函数。我可以问一下为什么投反对票吗?当然,请检查你回答中的语言。另外,下次,如果您有具体的限制,请在问题中立即说明,而不是在收到许多答案之后。
     $('input[type=submit]').on('click',function(){
          //do your event
    });
    
    $(document).ready(function() {
    
       var $submit_button = $('input[type=submit]');
    
       $submit_button.removeAttr('onclick');
    
       $submit_button.click(function() {
         //TODO: implement your custom handler
         //execute validation etc.
       });
    
    });
    
    $(document).ready(function(){
    
        document.whyyyyy.submit = function(e){
    
            alert(1);
            return false; 
    };
    });