2012-12-20 50 views
-1

我有一个表格现在,我想,以防止实际工作发送形式是像这样的OnClick绕过表单提交

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

作出dumbnes,但至今所有努力都失败了。

我的curent代码看起来像这样。

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

但内联提交命令绕过,因为它似乎是jQuery功能。

有人可以把光切入它吗?

编辑:

  1. 形式不能改变的,我没有权限更改。
  2. 点击代码应该触发提交功能,它在代码中有一些复杂的验证墙。所以我必须缓解他触发的提交行为,但我不能在那时做到这一点。
  3. 提交函数应在发送时触发,但不会触发。

以下是jfiddle中的代码示例。你可以看到它得到的jQuery过去......

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

+0

单引号如何,您应该使用双引号来包装属性值 – PhearOfRayne

+0

执行提交处理程序并显示警报? –

+0

没有那个问题,executuion处理程序被忽略。 – Sangoku

回答

1

,如果你不需要提交按钮,你为什么不使用常规的按钮,而不是

<input type="button" /> 
+0

它不是我的形式,我必须实施workround并且不能更改遗留代码。Q___Q – Sangoku

+0

而且您似乎错过了这一点,重点在于点击绕过jQuery处理程序的事件 – Sangoku

+0

为什么你不能改变它? – ErikE

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

+0

正如回复@RiccoE所指出的那样,我不能改变那个部分...只有文档准备部分 – Sangoku

0

只需使用常规按钮而不是提交。

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

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

不能编辑它自己的形式,需要从文档就绪功能中为它实现一个解决方案。 – Sangoku

+0

然后在文件就绪功能中将类别取消添加到提交按钮。 addClass('cancel') – Doink

+0

那会完成什么? – Sangoku

0

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

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

+0

抱歉无法做到这一点,因为我不能直接编辑表格,并且表单在点击功能上有一些很大的代码。哪个最终trigers表单提交,忽略jquery,即时猜测,因为它在这样低的层次上被激怒。 – Sangoku

+0

您可以保存点击功能并在完成新功能后调用它吗? – ErikE

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; 
    }); 
}); 
+0

这不会工作,只是现在试了一下。 我猜测,因为它是在一个代表js的新实例的行代码中发送的。而删除ous没有得到低谷或不知道什么。 – Sangoku

+0

@三国你尝试过吗? –

+0

我不能使用删除点击功能,因为它有一些巨大的遗留代码。 – Sangoku

0

删除的onclick

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

然后添加单击事件,所以如果我得到这个权利,你可以删除内联事件处理程序onclick和添加的功能准备

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

你应该使用正确的选择器来获取提交按钮'$('input [type = submit]')' –

+0

是的谢谢托尼会更新代码。 – Doink

0

确定您的自定义处理程序(在您进行验证和所有必要步骤的情况下):

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

}); 
+0

可悲的是。点击功能是由像10k岁以上的2k行文件的怪物生成的......但我试图将最终结果提交动作绑定到函数。我可以问为什么downvote? – Sangoku

+0

当然,请在您的答案中查看语言。另外,下一次,如果您有特定的限制条件,请立即在问题中将其清除,而不是在收到许多答案后。 –

-1

你不一定需要使用jQuery来实现这一点。你可以使用标准的JavaScript。

$(document).ready(function(){ 

    document.whyyyyy.submit = function(e){ 

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

这个例子有效,但你可能会碰到一个jQuery的错误。