OnClick绕过表单提交

时间:2012-12-20 09:23:44

标签: javascript jquery forms javascript-events submit

我有一个表格,用于制作像这样的dumbnes

<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>

现在,我想阻止实际发送表单,但到目前为止所有尝试都失败了。

我的代码看起来像这样。

$(document).ready(function(){
    $('form[name="whyyyyy"]').submit(function(e){
       e.preventDefault();
        alert(1);
        return false;
     });
})

但是内联的submit命令绕过了jQuery函数。

有人可以将光线切碎吗???

编辑:

  1. 表格不能更改,我无权更改。
  2. 点击代码应触发提交功能,它中包含一些复杂的代码验证墙。因此,我必须缓解他触发的提交动作,但我暂时不能这样做。
  3. 提交功能应该在发送时触发,但不会被触发。
  4. 以下是jfiddle中的代码示例。你可以看到它被jQuery过去了......

    http://jsfiddle.net/StCPp/4/

8 个答案:

答案 0 :(得分:1)

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

<input type="button" />

答案 1 :(得分:0)

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

答案 2 :(得分:0)

只需使用普通按钮代替提交即可。

如果您想绕过提交按钮,可以取消按钮的等级。

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

答案 3 :(得分:0)

在您的附加JavaScript中,删除内联onclick事件并将其替换为您想要的任何内容。问题解决了。

您也可以完全删除他的按钮并将其替换为您选择的按钮。

答案 4 :(得分:0)

删除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;
    });
});

答案 5 :(得分:0)

删除onclick

$('input[type=submit]').attr('onclick','')

然后将click事件添加到功能就绪

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

答案 6 :(得分:0)

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

$(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.
   });

});

答案 7 :(得分:-1)

您不一定需要使用jquery来实现它。你可以使用标准的javascript。

$(document).ready(function(){

    document.whyyyyy.submit = function(e){

        alert(1);
        return false; 
};
});

此示例有效,但您可能遇到了jquery错误。