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函数
有人能把光劈成碎片吗
编辑:
如果您不需要“提交”按钮,为什么不使用常规按钮
<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;
};
});